90
第 11 第 第第 / 第第第第

第 11 章 输入 / 输出接口

  • Upload
    eileen

  • View
    169

  • Download
    4

Embed Size (px)

DESCRIPTION

第 11 章 输入 / 输出接口. 本章主要内容. ( 1 ) I/O 接口的基本概念 ( 2 ) I/O 控制方式 ( 3 ) DMA 接口技术 ( 4 )可编程 DMA 控制器 8237. 11.1 I/O 接口的基本概念. 11.1.1 I/O 接口的基本功能 (1) 数据缓冲 (2) 提供联络信息 (3) 信号与信息格式的转换 (4) 设备选择 (5) 中断管理 (6) 可编程功能. 11.1.2 I/O 接口的基本结构 I/O 接口的基本结构如图 11.1 所示。. I/O 接口. cpu. - PowerPoint PPT Presentation

Citation preview

Page 1: 第 11 章    输入 / 输出接口

第 11 章 输入 / 输出接口

Page 2: 第 11 章    输入 / 输出接口

本章主要内容( 1) I/O 接口的基本概念( 2) I/O 控制方式( 3) DMA 接口技术( 4)可编程 DMA 控制器 8237

Page 3: 第 11 章    输入 / 输出接口

11.1 I/O 接口的基本概念

11.1.1 I/O 接口的基本功能 (1) 数据缓冲 (2) 提供联络信息 (3) 信号与信息格式的转换 (4) 设备选择 (5) 中断管理 (6) 可编程功能

Page 4: 第 11 章    输入 / 输出接口

11.1.2 I/O 接口的基本结构

I/O 接口的基本结构如图 11.1 所示。

Page 5: 第 11 章    输入 / 输出接口

cpu

数据输入寄存器

数据输出寄存器

状态寄存器

控制寄存器

中断控制逻辑

数据总线

地址总线

控制总线

图 11.1 I/O 接口的基本结构

I/O 接口

Page 6: 第 11 章    输入 / 输出接口

11.1.3 I/O 端口的编址方式 输入输出接口包含一组称为 I/O 端口的寄存器。为了

让 CPU 能够访问这些 I/O 端口,每个 I/O 端口都需有自己的端口地址 ( 或端口号 ) 。

在一个微型计算机系统中,如何编排这些 I/O 接口的端口地址,即所谓 I/O 端口的编址方式。

常见的 I/O 端口编址方式有两种 : 一种是 I/O 端口和存储器统一编址,也称存储器映像

的 I/O(Memory Mapped I/O) 方式; 另一种是 I/O 端口和存储器分开编址,也称 I/O 映像

的 I/O(I/O Mapped I/O) 方式。

Page 7: 第 11 章    输入 / 输出接口

1. I/O 端口和存储器统一编址 (Memory-mapped I/O)

I/O 端口和存储器统一编址的地址空间分布情况如图 11.2 所示。

Page 8: 第 11 章    输入 / 输出接口

I/O 端口

存储单元

I/O 地址空间

存储器地址空间整个地址空间

图 11.2 I/O 端口和存储器统一编址

Page 9: 第 11 章    输入 / 输出接口

这种编址方式的优点是,可以用访向存储器的指令来访问 I/O 端口,而访问存储器的指令功能比较强,不仅有一般的传送指令,还有算术、逻辑运算指令,以及各种移位、比较指令等,并且可以实现直接对 I/O端口内的数据进行处理。

例如,若一个存储器映像的 I/O 端口地址为 3000H, 则可以直接用指令“ ADD AL, DS: [ 3000H ]”对端

口的内容进行算术运算。

Page 10: 第 11 章    输入 / 输出接口

缺点是: 由于 I/O 端口占用了一部分存储器地址空间,因而使

用户的存储地址空间相对减小; 另外,由于利用访问存储器的指令来进行 I/O 操作,

指令的长度通常比单独 I/O 指令要长,因而指令的执行时间也较长。

微处理器 MC6800 系列、 6502 系列以及 MC680x0系列采用这种编址方式。

Page 11: 第 11 章    输入 / 输出接口

2. I/O 端口和存储器单独编址 (I/O- mapped I/O)

I/O 端口和存储器单独编址的地址空间分布如图 11.3所示。

Page 12: 第 11 章    输入 / 输出接口

存储单元 存储地址空间

I/O 端口 I/O 地址空间

图 11.3 I/O 端口和存储器单独编址

Page 13: 第 11 章    输入 / 输出接口

这种编址方式的优点是: 第一, I/O 端口不占用存储器地址,故不会减少用户

的存储器地址空间; 第二,单独 I/O 指令的地址码较短,地址译码方便, I

/O 指令短,执行速度快; 第三,采用单独的 I/O 指令,使程序中 I/O 操作和其

他操作层次清晰,便于理解。

Page 14: 第 11 章    输入 / 输出接口

这种编址方式的缺点是: 第一,单独 I/O 指令的功能有限,只能对端口数据进

行输入 / 输出操作,不能直接进行移位、比较等其他操作;

第二,由于采用了专用的 I/O 操作时序及 I/O 控制信号线,因而增加了微处理器本身控制逻辑的复杂性。

微处理器 Z80 系列、 Intel 80x86 系列采用了这种编址方式。

Page 15: 第 11 章    输入 / 输出接口

11.1.4 I/O 接口的地址分配

Page 16: 第 11 章    输入 / 输出接口

表 11-1 系统板 I/O 端口地址分配

地址空间 器件 / 接口适配器 实际使用端口地址

0000 ~ 001FH DMA 控制器 8237 00 ~ 0FH

0020 ~ 003FH 中断控制器 8259A 20 ~ 21H

0040 ~ 005FH 计数器 / 定时器 8253 40 ~ 43H

0060 ~ 007FH 并行接口片 8255A 60 ~ 63H

0080 ~ 009FH DMA 页面寄存器( 74LS670 )

80 ~ 83H

00A0 ~ 00BFH NMI 寄存器 A0H

00C0 ~ 01FFH 未用

Page 17: 第 11 章    输入 / 输出接口

表 11-2 扩展槽 I/O 端口地址分配

地址空间 器件 / 接口适配器 地址空间 器件 / 接口适配器200 ~ 20FH 游戏卡 380 ~ 38FH SDLC 通信卡210 ~ 217H 扩充部件 390 ~ 3AFH 未用218 ~ 2F7H 未用 3B0 ~ 3BFH 单显 / 打印卡2F8 ~ 2FFH 异步通信卡 (COM2

)3C0 ~ 3CFH 未用

300 ~ 31FH 未用 3D0 ~ 3DFH 彩显 / 图形卡320 ~ 32FH 硬盘卡 3E0 ~ 3EFH 未用330 ~ 377H 未用 3F0 ~ 3F7H 软盘卡378 ~ 37FH 打印卡 3F8 ~ 3FFH 异步通信卡 (COM

1)

Page 18: 第 11 章    输入 / 输出接口

11.1.5 I/O 接口的地址译码及片选信号的产生

在一个微机系统中通常具有多台外设,当 CPU 与外设进行通信时,需要对各个设备所对应的接口芯片进行逻辑选择,从而实现与相应的设备进行数据交换。

这种逻辑选择功能是由 I/O 接口电路中的地址译码器实现的。

目前常见的一种做法是:先通过对 I/O 端口地址的某几位高位地址进行译码,产生有效的片选信号,从而选中对应的接口芯片,再利用 I/O 端口地址的低位地址作为对接口芯片内部有关寄存器的选择。

Page 19: 第 11 章    输入 / 输出接口

例如,在 IBM PC/XT 微机中,其系统板上有数片 I/O接口芯片,其中包括DMA控制器 8237、中断控制器8259A、并行接口 8255A、计数器 /定时器 8253 等。

这些接口芯片必须是在相应的片选信号有效时才能工作。

图 11.4 所示的就是在该微机系统中片选信号的产生电路。

Page 20: 第 11 章    输入 / 输出接口

A Y0 B Y1 C Y2

Y3

Y4

G2B Y5 G2A Y6 G1 Y7

A5A6

A8

74LS138

A7

A9

AEN

PPICST/C CSINTRCS

DMACS

IOW

WRTDMAPG( 写 DMA 页面寄存器 )

WRTNMIREG (写 NMI 屏蔽寄存器)

图 11.4 片选信号的产生

Page 21: 第 11 章    输入 / 输出接口

11.2 I/O 控制方式 主机与外围设备之间的数据传送控制方式 (即 I/O 控制

方式 ) 主要有三种: 程序控制方式、中断控制方式和直接存储器存取 (DM

A) 方式。11.2.1 程序控制方式 程序控制方式是指在程序控制下进行的数据传送方式。它又分为无条件传送和程序查询传送两种。

1. 无条件传送方式 优点: 缺点:

Page 22: 第 11 章    输入 / 输出接口

2. 程序查询传送方式优点:缺点:

Page 23: 第 11 章    输入 / 输出接口

准备好?

读取状态信息

输入数据

图 11.5 查询式输入程序流程图

忙?

读取状态信息

输出数据

图 11.6 查询式输出程序流程图

Page 24: 第 11 章    输入 / 输出接口

11.2.2 中断控制方式 与程序查询方式相比,中断控制方式的数据交换具有

如下特点 : (1) 提高了 CPU 的工作效率 ; (2) 外围设备具有申请服务的主动权 ; (3) CPU 可以和外设并行工作 ; (4) 可适合实时系统对 I/O 处理的要求。

Page 25: 第 11 章    输入 / 输出接口

11.2.3 DMA 方式

1. DMA 的基本概念 采用程序控制方式以及中断方式进行数据传送时,都

是靠 CPU 执行程序指令来实现数据的输入 / 输出的。 采用程序控制方式及中断方式时,数据的传输率不会

很高。 对于高速外设 ,如高速磁盘装置或高速数据采集系统

等,采用这样的传送方式,往往满足不了其数据传输率的要求。

例如,对于磁盘装置,其数据传输率通常在 20 万字节/秒以上,即传输一个字节的时间要小于 5μs。

Page 26: 第 11 章    输入 / 输出接口

对于通常的 PC 机来说,执行一条程序指令平均需要几 μs时间。显然,采用程序控制或中断方式不能满足这种高速外设的要求。

由此产生不需要 CPU 干预 ( 不需 CPU 执行程序指令 ) ,而在专门硬件控制电路控制之下进行的外设与存储器间直接数据传送的方式,称为直接存储器存取 (Direct Memory Access) ,简称 DMA 方式。

这一专门的硬件控制电路称为 DMA控制器,简称 DMAC 。

Page 27: 第 11 章    输入 / 输出接口

CPU

外设

存储器

总线

:执行程序指令的数据传送路径; : DMA 方式的数据传送路径

图 11.7 两种不同的数据传送路径

Page 28: 第 11 章    输入 / 输出接口

内存 外设

DMAC

输出

输入外设 外设

DMAC

内存 内存

DMAC

图 11.8 DMA 传送的几种形式

Page 29: 第 11 章    输入 / 输出接口

11.3 DMA 接口技术

11.3.1 DMA 控制器的基本功能 (1) 能接收 I/O 接口的 DMA请求,并向 CPU发出总线请求信号;

(2) 当 CPU发出总线回答信号后,接管对总线的控制,进入 DMA传送过程;

(3) 能实现有效的寻址,即能输出地址信息并在数据传送过程中自动修改地址;

Page 30: 第 11 章    输入 / 输出接口

(4) 能向存储器和 I/O 接口发出相应的读 /写控制信号; (5) 能控制数据传送的字节数,控制 DMA传送是否结束; (6) 在 DMA传送结束后,能释放总线给 CPU ,恢复 CPU

对总线的控制。

Page 31: 第 11 章    输入 / 输出接口

11.3.2 DMA 控制器的一般结构 一个单通道DMA控制器的一般结构及其与 I/O 接口的连接如图 11.9所示。

图 11.9的上半部分是 I/O 接口,下半部分是 DMA控制器。

Page 32: 第 11 章    输入 / 输出接口

计数结束信号

(可作为中断请求信号)

控制寄存器

状态寄存器

数据输入寄存器

数据输出寄存器

控制寄存器

状态寄存器

地址寄存器

字节计数寄存器

数据总线

控制总线

数据总线

控制总线

地址总线

地址总线 地址译码器 DMA 控制器

DMA 请求DMA 响应

中断请求

外设

I/O 接口

总线回答总线请求

图 11.9 DMA 控制器的一般结构及其与 I/O 接口的连接

Page 33: 第 11 章    输入 / 输出接口

11.3.3 DMA 控制器的工作方式 DMA控制器的工作方式通常有“单字节传输方式”、“块

传输方式”以及“请求传输方式”等,下面分别予以说明。

1. 单字节传输方式 在单字节传输方式下, DMA控制器每次请求总线只传送

一个字节数据,传送完后即释放总线控制权。 在此方式下,总线控制权处于 CPU 与 DMA控制器交替

控制之中,其间,总线控制权经过多次交换。2. 块传输方式 ( 也称成组传输方式 ) 块传输方式是指 DMA控制器每次请求总线即连续传送一

个数据块,待整个数据块全部传送完成后再释放总线控制权。

Page 34: 第 11 章    输入 / 输出接口

3. 请求传输方式 每传输完一个字节, DMA控制器都要检测由 I/O 接口发来的“DMA请求”信号是否仍然有效,如果该信号仍有效,则继续进行 DMA传输;

否则,就暂停传输,交还总线控制权给 CPU ,直至“DMA请求”信号再次变为有效,数据块传输则从刚才暂停的那一点继续进行下去。

Page 35: 第 11 章    输入 / 输出接口

11.3.4 DMA 工作过程

在 DMA方式下,往往传送的是一个数据块,但传送这个数据块的具体操作方式,可以采用上面介绍的单字节传输方式,也可采用块传输或请求传输方式。

下面先以从内存输出一个字节数据到外设 的 DMA传送过程为例,具体说明DMA的操作过程。

然后再给出以 DMA 方式输入一个数据块的工作过程。以 DMA方式从内存输出一个字节数据到外设的具体工作过程如图 11.10中第①~⑨步所示。

Page 36: 第 11 章    输入 / 输出接口

(6) 内存把数据送数据总线

(7) 接口锁存数据

内存

接口

DMA控制器

I/O 设备

8086 和总线

控制逻辑

HOLD

HLDA

(1) 接口准备就绪,发 DMA 请求(2) 发总线请求

(3) 总线允许

(5) DMA 请求得到确认

(9) 8086 收回总线控制权(8) 撤销总线请求

(4) DMA 控制器把地址送地址总线

数据总线

控制总线

地址总线

图 11.10 以 DMA 方式输出一个字节数据的工作过程

Page 37: 第 11 章    输入 / 输出接口

若从外设往内存输入一个数据块 ( 输入过程 ) ,在单字节传输方式下,其主要工作过程为:

(1) I/O 接口向 DMA控制器发送 DMA请求信号; (2) DMA控制器向 CPU发总线请求信号,当得到 CPU 送

来的总线允许信号后, DMA控制器获得总线控制权; (3) DMA控制器将其地址寄存器的内容送到地址总线上。

Page 38: 第 11 章    输入 / 输出接口

(4) DMA控制器往 I/O 接口发送 DMA响应信号,并接着发出读 I/O 接口信号 IOR,令 I/O 接口把数据送到数据总线上;

(5) DMA控制器发出存储器写信号 MEMW,将数据传送到由地址总线上的地址所指向的内存单元;

(6) DMA控制器放弃对总线的控制权; (7) 地址寄存器加 1 ; (8) 字节计数寄存器减 1 ; (9) 如果字节计数寄存器的值不为零,则返回第一步,否则结束。

Page 39: 第 11 章    输入 / 输出接口

11.4 可编程 DMA 控制器 8237

DMA Chip 8237A ----A Detour Highway in the

PC.

Page 40: 第 11 章    输入 / 输出接口

Intel 8237是一种功能很强的可编程 DMA控制器 , 广泛应用于微型计算机系统中。

采用 5MHz时钟时,其传输速率可达 1.6M字节 /秒; 一片 8237内部有四个独立的 DMA 通道,每个通道一

次 DMA传送的最大长度可达 64K字节。

Page 41: 第 11 章    输入 / 输出接口

每个通道的 DMA请求都可以分别允许和禁止;不同通道的 DMA请求有不同的优先级,优先级可以是固定的,也可以是循环的 ( 可编程设定 ) ;

四个通道可以分时地为四个外部设备实现 DMA传送,也可以同时使用其中的通道 0和通道 1 实现存储器到存储器的直接传送,还可以用多片 8237进行级联,从而构成更多的 DMA通道。

Page 42: 第 11 章    输入 / 输出接口

Intel Enable/Disable Control of Individual DMA Request Four Independent DMA Channels Independent Autoinitialization of all Channels Memory-to- Memory Transfers Memory Block Initialization Address Increment or Decrement High Performance: Transfers up to 1.6M Bytes/Second with 5 M

Hz 8237-2 Directly Expandable to any Number of Channels End of Process Input for Terminating Transfers Software DMA Requests Independent Polarity Control for DREQ and DACK Signals

8237/8237-2

HIGH PERFORMANCE

PROGRAMMABLE DMA CONTROLLER

Page 43: 第 11 章    输入 / 输出接口

11.4.1 8237 的结构

DMA控制器 8237的结构框图及在系统中的有关逻辑如图 11.11 所示。

图中只画了一个通道的具体情况,其他通道与此相同。

Page 44: 第 11 章    输入 / 输出接口

命令寄存器

状态寄存器

模式寄存器

基字节数寄存器

基地址寄存器

当前字节数寄存器

当前地址寄存器

暂存寄存器

请求位 屏蔽位通道 0

(6 位 )

(8 位 )

(8 位 )

(8 位 )

通道 1

通道 3

通道 2

___IOR______

MEMR____IOW______

MEMW

READY

RESET

DREQ0

DACK0

DREQ1

DACK1

DREQ2

DACK2

DREQ3

DACK3

HRQ

HLDA

CLK

AEN

ADSTB

DB7 ~ DB0

A3 ~ A0

A7 ~ A4

__CSA15 ~ A8

A7 ~ A0

___OE

STB

8 位锁存器

地址

译码器

_IO/M

数据总线

使 CPU 的总线信号无效

HOLD

HLDA

Clock

____EOP

+5V

Vcc GND

图 11.11 8237 的结构及有关逻辑

Page 45: 第 11 章    输入 / 输出接口

表 11-3 8237 内部寄存器

寄存器名称 位数 数量 CPU 访问方式基地址寄存器 16 位 4 只写基字节计数寄存器 16 位 4 只写当前地址寄存器 16 位 4 可读可写当前字节计数寄存器 16 位 4 可读可写临时地址寄存器 16 位 4 不可访问临时字节计数寄存器 16 位 4 不可访问命令寄存器 8 位 1 只写状态寄存器 8 位 1 只读暂存寄存器 8 位 1 只读模式寄存器 6 位 4 只写屏蔽寄存器 4 位 1 只写请求寄存器 4 位 1 只写

Page 46: 第 11 章    输入 / 输出接口

11.4.2 8237 的引脚

8237芯片采用 40个引脚双列直插封装,其引脚配置(pin configuration) 如图 11.12 所示。

Page 47: 第 11 章    输入 / 输出接口

图 11.12 8237 的引脚配置

8237/8237-2

A7

Vcc (+5V)

A0

A1

A2

A3

EOP

A4

A5

A6

DB0

DB1

IOR

HRQ

AEN

ADSTB

HLDA

READY

(NOTE 11)

MEMW

MEMR

IOW

CS

RESET

CLK

DB2

DB5

DACK0

DB4

DB3

DB7

DB6

DACK1

DACK2

DACK3

DREQ3

DREQ2

DREQ1

DREQ0

(GND)Vss

1

10

9

8

7

6

5

4

3

2

11

20

19

18

17

16

15

13

12

40

31

32

33

34

35

36

37

38

39

30

21

22

24

25

26

27

28

29

14

23

Page 48: 第 11 章    输入 / 输出接口

11.4.3 8237 的工作方式

8237 具有四种工作方式: 1. 单字节传送方式 (single transfer mode) 2. 块传送方式 (block transfer mode) 3. 请求传送方式 (demand transfer mode) 4. 级联方式 (cascade mode) 在级联方式下,将多个 8237 级联起来,以扩展 DMA 通

道数。后一级的 HRQ 和 HLDA 信号连到前一级的 DREQ和 DACK 上,如图 11.13 所示。

Page 49: 第 11 章    输入 / 输出接口

微处理器

HOLD HLDA

DREQ0

DACK0

HRQ . HLDA . . 8237 DREQ3

DACK3

8237HRQHLDA

HRQHLDA

8237

……

第二级第一级

图 11.13 8237 的级联

Directly Expandable to any Number of Channels

Page 50: 第 11 章    输入 / 输出接口

另外,在前三种工作方式下, DMA传送有三种类型,它们是:读传送、写传送和校验传送。

DMA 读传送是指把数据由存储器传送至 I/O 接口 ( 可简记为 M→I/O) ,操作时先由 MEMR有效从存储器读出数据放在数据总线上,然后再由 IOW有效把数据写入 I/O 接口;

DMA 写传送是指把数据由 I/O 接口传送至存储器,操作时先由 IOR有效从 I/O 接口读出数据放在数据总线上,然后再由 MEMW有效把数据写入存储器 .

Page 51: 第 11 章    输入 / 输出接口

校验传送也被称为假传送 (pseudo transfers) 。在校验传送时, 8237 虽然也像读传送或写传送一样地产生地址以及响应 EOP 信号等,但存储器和 I/O 接口的读、写控制信号均处于无效状态,所以实际上并不进行真正的数据传送。

这种传送类型一般是用于对 DMAC 器件测试时使用。

Page 52: 第 11 章    输入 / 输出接口

11.4.4 8237 的寄存器及有关问题的说明

1. 当前地址寄存器2. 当前字节计数寄存器3. 基地址和基字节计数寄存器 基寄存器的内容不能被 CPU 读出,而当前寄存器的内

容可以被 CPU 读出。4. 模式寄存器 模式字的格式如图 11.14 所示。

Page 53: 第 11 章    输入 / 输出接口

D7 D6 D5 D4 D3 D2 D1 D0

0 地址增一

1 地址减一

0 禁止自动初始化

1 允许自动初始化

00 选择通道0

01 选择通道1

10 选择通道2

11 选择通道300 校验传送

01 写传送

10 读传送

11 非法

XX 若 D7D6=11

00 请求传送方式

01 单字节传送方式

10 块传送方式

11 级联方式

图 11.14 模式字格式

Page 54: 第 11 章    输入 / 输出接口

5. 命令寄存器

命令寄存器是四个通道公用的一个 8 位寄存器,用以控制整个 8237 的操作。

一片 8237只有一个命令寄存器,其内容对四个通道都有效。

编程时,由 CPU 对它写入命令字,命令字的格式如图11.15 所示。

Page 55: 第 11 章    输入 / 输出接口

D7 D6 D5 D4 D3 D2 D1 D0

0 DACK 低电平有效

1 DACK 高电平有效

0 DREQ 高电平有效

1 DREQ 低电平有效 0 正常写

1 扩展写

X 若 D3=1

0 固定优先级

1 循环优先级

0 禁止存储器到存储器传送

1 允许存储器到存储器传送0 禁止通道 0 地址保存

1 允许通道 0 地址保存

X 若 D0=0

0 控制器允许

1 控制器禁止

0 普通时序

1 压缩时序

X 若 D0=1

图 11.15 命令寄存器

Page 56: 第 11 章    输入 / 输出接口

( 1)D0位用来规定是否工作在存储器到存储器的传送方式。

当 8237 工作在这种传送方式时,要使用通道 0和通道 1两个 DMA 通 :

通道 0的地址寄存器编程为源区地址 ; 通道 1的地址寄存器编程为目的区地址 ; 通道 1的字节计数寄存器编程为传送的字节数。 由于此传送过程没有外部设备参与,因此不需一个外部引

入的 DREQ信号来启动。 传送是由设置通道 0 的软件 DMA 请求来启动的。

Page 57: 第 11 章    输入 / 输出接口

每传送一个字节要用 8个时钟周期,其中前 4 个时钟周期以通道 0的当前地址寄存器内容为源地址读出数据送入暂存寄存器,后 4 个时钟周期以通道 1 的当前地址寄存器内容为目的地址把暂存寄存器中的数据写入目的区。

每传送一个字节,源地址和目的地址都要修改 ( 增 1或减 1) ,字节数减 1 。直至通道 1 的字节计数结束,产生 EOP 有效信号,才停止DMA传送。

Page 58: 第 11 章    输入 / 输出接口

(2) D1 位用来设定在存储器到存储器传送的整个过程中,通道 0中的源地址是否保持不变。

若 D1= 1,则通道 0中的源地址保持不变, DMA 传送的结果是将源区的同一个数据字节写入到整个目的区中;若 D1= 0,则表示通道 0中的源地址可以修改。

若 D0= 0,则不允许存储器到存储器的传送,此时 D1位无意义。

(3) D2 位是用于允许 (Enable) 或禁止 (Disable)8237工作的控制位。

Page 59: 第 11 章    输入 / 输出接口

( 4)D3 、 D5 位是与时序有关的控制位,详见后面的时序说明。

(5) D4 位用来设定通道优先权结构。 当 D4 = 0 时,为固定优先权,通道 0的优先权最高,

其他通道的优先权随通道号的增大而递减,通道 3 的优先权最低;

当 D4=1 时,为循环优先权,即在每次 DMA服务之后,各个通道的优先权都发生变化,刚刚服务过的通道其优先权变为最低,它后面通道的优先权变为最高。如表 11-4 所示。

Page 60: 第 11 章    输入 / 输出接口

表 11-4 优先权循环的情况

第一次服务 第二次服务 第三次服务

最高优先权 0 2 服务 3 服务

1 服务 3 请求 0

2 请求 0 1

最低优先权 3 1 2

Page 61: 第 11 章    输入 / 输出接口

需注意的是, DMA的优先权排序只是用来决定同时请求DMA服务的通道的响应次序,而任何一个通道一旦进入 DMA服务,其他通道都不能打断它的服务,这一点和中断服务的情况是不同的。

(6) D6 、 D7位用于设定DREQ和 DACK的有效电平极性。

Page 62: 第 11 章    输入 / 输出接口

6. 请求寄存器 8237的每个通道除了可以响应硬件的 DMA请求信号

(DREQ) 外,当其工作在块传送方式时也可以响应由软件发出的 DMA请求。

软件的 DMA请求是通过使相应通道的“请求位” (request bit) 置位来实现的,它等效于外部产生一个有效的 DREQ信号。

8237每一个通道有一位“请求位”,四个通道的请求位构成一个 4 位的请求寄存器。

对请求寄存器的命令字 (请求命令字 ) 格式如图 11.16所示。

Page 63: 第 11 章    输入 / 输出接口

D7 D6 D5 D4 D3 D2 D1 D0

00 选择通道0

01 选择通道1

10 选择通道2

11 选择通道3

0 清除请求1 设置请求

无关

图 11.16 请求命令字

Page 64: 第 11 章    输入 / 输出接口

一个通道的 DMA传输结束后,其请求位被清除。复位操作将使整个请求寄存器清除。

只有在块传送方式时,才允许使用软件请求,若用于存储器到存储器的传送,则必须用对通道 0的软件请求来启动传送过程。

Page 65: 第 11 章    输入 / 输出接口

7. 屏蔽寄存器 8237每个通道有一位“屏蔽位” (mask bit ) ,当其

通道的“屏蔽位”置 1 时,则外部对应的 DREQ信号被屏蔽,不予响应,从而禁止了该通道的 DMA操作。

四个通道的“屏蔽位”构成一个 4 位的屏蔽寄存器。

Page 66: 第 11 章    输入 / 输出接口

有两种屏蔽寄存器的命令字格式: 一种是单独对某一个通道的屏蔽位进行置位或复位,

如图 11.17(a) 所示; 另一种是可以同时设定四个通道的屏蔽位,也称综合屏蔽命令字,如图 11.17(b) 所示。

Page 67: 第 11 章    输入 / 输出接口

D7 D6 D5 D4 D3 D2 D1 D0

00 选择通道0

01 选择通道1

10 选择通道2

11 选择通道3

0 清除屏蔽位1 置位屏蔽位

无关

( a )

图 11.17 屏蔽字的两种格式

Page 68: 第 11 章    输入 / 输出接口

D7 D6 D5 D4 D3 D2 D1 D0

无关

0 清通道 0 屏蔽位1 置位通道 0 屏蔽位

0 清通道 1 屏蔽位1 置位通道 1 屏蔽位

0 清通道 3 屏蔽位1 置位通道 3 屏蔽位

0 清通道 2 屏蔽位1 置位通道 2 屏蔽位

( b)

图 11.17 屏蔽字的两种格式

Page 69: 第 11 章    输入 / 输出接口

8. 状态寄存器 8237有一个可由 CPU读取的状态寄存器,如图 11.18

所示。 CPU 通过读取状态寄存器的内容可以了解 DMA进行

的情况。

Page 70: 第 11 章    输入 / 输出接口

D7 D6 D5 D4 D3 D2 D1 D0

1 通道 3请求

1 通道 2请求

1 通道 1请求

1 通道 0请求

1 通道 0 传输结束

1 通道 1 传输结束

1 通道 2 传输结束

1 通道 3 传输结束

图 11.18 状态存储器

Page 71: 第 11 章    输入 / 输出接口

11.4.5 特殊软件命令

CPU 向 8237 输出的软件命令可分为两种不同类型,一类是不仅与写入的端口地址有关 (不同的软件命令必须写入到不同的端口之中 ),也与写入软件命令时数据总线上的位模式 (bit pattern) 有关,即写入指定端口的软件命令应有特定的数据格式。

如前面介绍的模式字、命令字、屏蔽字等就属这种类型。

Page 72: 第 11 章    输入 / 输出接口

8237还有另一类软件命令 (特殊的软件命令 ) ,它们只与写入的端口地址有关,而与写入软件命令时数据总线上的位模式无关 ( They do not depend on any specific bit pattern on the data bus) ,即这些命令是 8237直接对地址 (A3 ~ A0) 和 CS、IOW信号的译码产生的,并不使用数据总线。

也就是说,在输出特殊软件命令时,只要往指定端口实施写入操作即可,而无须通过数据总线输出特定格式的控制字。

Page 73: 第 11 章    输入 / 输出接口

8237 有两种特殊软件命令:1. 清除高 / 低触位器 (Clear First/Last Flip Flop) 命令 8237内部有一个高 /低触发器,用以控制读 /写 16

位寄存器的低字节和高字节。若该触发器为“ 0”,则读 /写低字节;为“ 1”,则读 /写高字节。

每次复位后,此触发器被清零。每当对 16 位寄存器进行一次读 /写操作,则此触发器改变一次状态。

用户可以用此软件命令使高 /低触发器强制清零,以保证对 16 位寄存器的读 /写是从低字节开始。

Page 74: 第 11 章    输入 / 输出接口

2. 主清除命令 (Master Clear) 该软件命令与硬件的 Reset信号作用相同,即它使命

令、模式、状态、请求、暂存器以及内部的高 /低触发器清零,而使屏蔽寄存器置为全“ 1”。

执行主清除命令后,使 8237进入空闲周期,以便对其编程。

Page 75: 第 11 章    输入 / 输出接口

11.4.6 8237 内部寄存器的寻址

一片 8237占用 16 个连续的 I/O 端口地址。在片选信号 CS有效的前提下,由地址信号 A3 ~ A0、 IOR及 IOW实现对 8237内部寄存器 (I/O 端口 ) 的寻址。

8237内部寄存器的寻址情况如表 11-5 所示。

Page 76: 第 11 章    输入 / 输出接口

表 11-5 8237 内部寄存器的寻址

A3 A2 A1 A0 通道号 读操作 (IOR) 写操作( IOW ) 0 0 0 0

0 读当前地址寄存器 写基和当前地址寄存器

0 0 0 1

读当前字节计数寄存器 写基和当前字节计数寄存器

0 0 1 0 1 读当前地址寄存器 写基和当前地址寄存器 0 0 1 1

读当前字节计数寄存器 写基和当前字节计数寄存器

0 1 0 0

2 读当前地址寄存器 写基和当前地址寄存器

0 1 0 1

读当前字节计数寄存器 写基和当前字节计数寄存器

0 1 1 0

3 读当前地址寄存器 写基和当前地址寄存器

0 1 1 1

读当前字节计数寄存器 写基和当前字节计数寄存器

1 0 0 0

四个通道公用

读状态寄存器 写命令寄存器

1 0 0 1

-- 写请求寄存器

1 0 1 0

-- 写屏蔽寄存器某一位

1 0 1 1

-- 写模式寄存器

1 1 0 0

-- 清除高低位触发器命令

1 1 0 1

读暂存寄存器 主清除命令

1 1 1 0

-- --

1 1 1 1

-- 写屏蔽寄存器所有位

Page 77: 第 11 章    输入 / 输出接口

11.4.8 8237 的页面寄存器 由于 8237只能输出 16 位地址,所以在其控制下进行的 D

MA传送的最大寻址空间为 216 。

对于更大的 DMA传送地址空间,则必须设法提供除此 16位地址以外的高位地址。

例如在 IBM PC/XT 微机系统中,内存地址为 20位 (A19~A0) ,所以高 4 位地址 (A19~ A16) 不能由 8237提供。

Page 78: 第 11 章    输入 / 输出接口

为此,系统中专门为每个 DMA通道增设了一个 4 位 I/O端口,在数据块传送之前可单独对其编程,用以提供高4 位地址。

这 4 位 I/O 端口也称 DMA 页面寄存器。 IBM PC/XT 的页面寄存器是由一个寄存器堆( 74LS670 )

构成,内含 4个 4位寄存器,可用来存放 4个 DMA 通道的高 4位地址 A19 ~ A16 。

它与 8237 送出的 16位地址一起形成 20位地址 A19 ~ A0, 用这 20 位地址信息即可寻址全部 1MB 存储单元。

Page 79: 第 11 章    输入 / 输出接口

IBM PC/XT中分配的页面寄存器的端口地址为: 通道 1——83H ;通道 2——81H ;通道 3——82H 。

由于在该系统中 8237的通道 0是用于对动态RAM刷新操作,而动态RAM刷新时不需要使用页面寄存器,因而也就不需要分配通道 0 的页面寄存器端口地址。

Page 80: 第 11 章    输入 / 输出接口

11.4.9 8237 的编程

1. 编程步骤 8237的编程通常可按如下步骤进行: (1) 输出主清除命令; (2) 置页面寄存器; (3) 写入基和当前地址寄存器; (4) 写入基和当前字节计数寄存器; (5) 写入模式寄存器; (6) 写入命令寄存器; (7) 写入屏蔽寄存器; (8) 写入请求寄存器。

Page 81: 第 11 章    输入 / 输出接口

其中第 (8) 步是采用软件 DMA请求时所需要的,由此可将相应的请求命令字写入指定通道,从而启动DMA传送过程;

若为硬件 DMA请求,则无需此步骤,只要在完成了 (1) ~(7) 步编程后,由通道的 DREQ信号即可启动DMA传送过程。

Page 82: 第 11 章    输入 / 输出接口

2. 编程举例 在 IBM PC 系统中,试利用 8237 通道 1,将内存 8000H :

0H 开始的 16K 字节数据传送至磁盘 (地址增量传送 )。 要求采用块传送方式,传送完不自动预置, DREQ 和 DA

CK 均为高电平有效,固定优先级,普通时序,不扩展写信号。

系统中 8237 的端口地址为 00H ~ 0FH 。 通道 1“页面寄存器”的端口地址为 83H 。

Page 83: 第 11 章    输入 / 输出接口

1 0 0 0 1 0 0 1

D7 D6 D5 D4 D3 D2 D1 D0

89H

块方式 读传送 通道 1

地址增量 非自动初始化

( 1 )确定模式字

Page 84: 第 11 章    输入 / 输出接口

D7 D6 D5 D4 D3 D2 D1 D0

1 0 0 0 0 0 0 0

( 2 )确定命令字

非存储器至存储器传送

无意义

控制器允许

普通时序

DACK 高电平有效

DREQ 高电平有效

正常写

固定优先级

80H

Page 85: 第 11 章    输入 / 输出接口

( 3 )确定屏蔽字

D7 D6 D5 D4 D3 D2 D1 D0

0 0 0 0 0 0 0 1 01H

通道 1 的屏蔽位复位

Page 86: 第 11 章    输入 / 输出接口

初始化程序如下: OUT 0DH , AL ; 输出主清除命令 MOV AL, 08H ; 置通道 1“ 页面寄存器” OUT 83H, AL MOV AL , 00H ; 写入基和当前地址低 8 位 OUT 02H , AL MOV AL , 00H ; 写入基和当前地址高 8 位 OUT 02H , AL MOV AL , 00H ; 写入基和当前字节计数寄存器低 8 位 OUT 03H , AL MOV AL , 40H ; 写入基和当前字节计数寄存器高 8 位 OUT 03H , AL MOV AL , 89H ; 输出模式字 OUT 0BH , AL MOV AL , 80H ; 输出命令字 OUT 08H , AL MOV AL , 01H ; 输出屏蔽字 OUT 0AH , AL

Page 87: 第 11 章    输入 / 输出接口

11.4.10 8237 应用举例例 11.1 利用 8237通道 1 进行 DMA传送的实验电路示意图如图 11.20所

示。现要求每发生一次 DMA请求,则从接口电路 (74LS244) 向内存传送一个字节数据,存入从 6000H: 0H开始的 10个字节的缓冲区,随后将该缓冲区的内容送 PC 机屏幕上显示。

试编写实现上述功能的 8237的初始化程序及有关控制程序。 8237的端口地址为 00H~ 0FH,通道 1页面寄存器的端口地址

为 83H。 解 : (1) 实现本例功能要求的程序框图如图 11.21 所示。 (2) 确定模式字: 55H 确定命令字: 00H 确定屏蔽字: 01H

Page 88: 第 11 章    输入 / 输出接口

参考程序: DMA-IN.ASM

DATA SEGMENT IN-data DB 10 dup(20H),0DH,0AH,24H DATA ENDS EXTRA SEGMENT AT 6000H BUF-data DB 13 dup(?) EXTRA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA, ES: EXTRA START: MOV AX, DATA MOV DS,AX MOV AX,EXTRA MOV ES,AX LEA SI, IN-data LEA DI, BUF-data CLD ; 使方向标志 DF=0 MOV CX,13 ; REP MOVSB ; 清缓冲区 MOV DS,AX ;为下边的 9 号功能调用做准备 OUT 0DH,AL ; 向 8237 输出主清除命令 ( 改为 :OUT 0CH, AL; 清除高 / 低位触发器) MOV AL, 06H OUT 83H, AL ; 置通道 1页面寄存器

Page 89: 第 11 章    输入 / 输出接口

MOV AL, 00H OUT 02H, AL ;写入地址低 8位 MOV AL, 00H ; OUT 02H, AL ;写入地址高 8位 MOV AX, 9 ;置传送字节数 ( 实际传送的字节数为 10个) OUT 03H, AL ; 先写低 8位 MOV AL, AH OUT 03H, AL ; 后写高 8位 MOV AL, 55H OUT 0BH, AL ; 输出模式字 MOV AL , 00H OUT 08H , AL ; 输出命令字 ( 若系统已对 8237 设置过命令字,则此处不应再次设置命令字) MOV AL, 01H; OUT OAH, AL ; 清除通道 1屏蔽位 DISPLAY: LEA DX, BUF-data MOV AH, 09H 1NT 21H ;显示字符串 MOV AH, 01H 1NT 16H JZ DISPLAY ;无键按下,继续显示 MOV AH, 4CH 1NT 21H ;有键按下,返回DOS CODE ENDS END START

Page 90: 第 11 章    输入 / 输出接口

第 11 章 作业第 5题第 8题第 12题 ( 将题中的“从外设往内存输入”改为“从内存往外设输

出” )第 15题第 27题