31
第第第 I/O 第第 I/O 第第第第第 I/O 第第第 第第第 第第第 I/O 第第第第第第第第第第 . I/O 第第第第 第 . 第第第第第第第 8086 第 I/O 第第 第第第 CPU 第第第第第第第 第第第 第第第第第 第 一传 第第第第第 第 第第 第第第 第 第 第第第第第第第 DMA 第第第 I/O 第第第第第 PC 第第 I/O 第第第第 第第第第第第第 第第 PC 第第 I/O 第第第第第第 6 2 6 7

第六章 I/O 接口

  • Upload
    mingan

  • View
    162

  • Download
    0

Embed Size (px)

DESCRIPTION

第六章 I/O 接口. 6 - 2 , 6 - 7. 第一节 概 述. 一、 I/O 接口的功能 二、 I/O 接口的一般结构. 第二节 I/O 端口的寻址方式和指令. 一 . I/O 指令寻址. 二 . 存储器映象寻址. 三、 8086 的 I/O 指令. 第三节 CPU 与外设间的数据传送方式. 一、无条件传送. 二、查询传送. 三、 中断传送. 四、直接存储器存取 DMA. 第四节 I/O 译码电路和 PC 机的 I/O 地址分配. 一、译码电路举例. - PowerPoint PPT Presentation

Citation preview

Page 1: 第六章     I/O 接口

第六章 I/O 接口

第一节 概 述一、 I/O 接口的功能 二、 I/O 接口的一般结构

第二节 I/O 端口的寻址方式和指令一 . I/O 指令寻址 二 . 存储器映象寻址 三、 8086 的 I/O 指

令第三节 CPU 与外设间的数据传送方式

一、无条件传送 二、查询传送三、 中断传送 四、直接存储器存取 DMA

第四节 I/O 译码电路和 PC 机的 I/O 地址分配

一、译码电路举例 二、 PC 机的 I/O 端口地址分配

6 - 2 , 6 -7

Page 2: 第六章     I/O 接口

第一节 概 述

一、 I/O 接口的功能

1. 采用 I/O 接口的必要性* 外围设备的品种繁多 机械,电子,机电,磁电,光电

* 所传输的信息的要求不同 数字,模拟,电压,电流等

2. 计算机与外设之间的信息交换应解决的问题:* 速度不匹配

* 信号电平不匹配

* 信号格式不匹配

* 时序不匹配

Page 3: 第六章     I/O 接口

3. I/O 接口应具有的功能(解决的方案)

* 设置数据缓冲器以解决两者速度差异所带来的不协调问题; 输入: 输入设备数据线 三态缓冲器 DB CPU

寻 址 等待数据输入 读入数据

确定输入端口地址

AB 、 M/ IO 、 ALE 、 DT/R

等待数据输入

输入缓冲器

输入缓冲器

DB CPU

输出: CPU DB 锁存器 输出设备数据线

寻 址 输出数据 等待数据输出

确定输出端口地址

AB 、 M/IO 、 ALE 、 DT/R

CPU DB

输出锁存器

等待输出设备

从锁存器取走数据

Page 4: 第六章     I/O 接口

* 设置信号电平转换电路以解决两者之间信号电平的不一致问题

例如:在串行通信中,常采用 MC1488 , MC1489 等芯片实现

电平转换。

* 设置信息转换逻辑以满足对各自信号格式的要求

例如: A/D 转换, D/A 转换,串 / 并转换,并 / 串转换等。

* 设置时序控制电路以同步 CPU 和外设的工作

接口电路接收 CPU 送来的命令或控制字,实施对外设的控

制和管理;外设的工作状态和应答信号也通过接口及时返

回给 CPU (设备就绪,忙,缓冲器满,空),保证 CPU

外设工作实现同步。

Page 5: 第六章     I/O 接口

* 提供地址译码电路

CPU 与多个外部设备交换信息;

每个外部设备通常包含若干个端口(数据,控制,状态)。

* 最好可编程应用

Page 6: 第六章     I/O 接口

信号: CPU 与外设之间传送的信号有:数据、状态、控制状态信号:反映外设当前所处的工作状态。 输入设备数据准备好, READY = 1 输出设备正忙于处理, BUSY = 1 。控制信号:控制外设的工作。 CPU 启动或停止外设工作, CPU 确定外设的工作方式。端口:一般接口电路中通常设置三个端口:数据端口 ( 输入 / 输出 ) ;状态端口;控制或命令端口。

二、 I/O 接口的一般结构

C P U

AB

DB

M / IO

WR

RD

数据

状态

控制

外部设备

Page 7: 第六章     I/O 接口

第二节 I/O 端口的寻址方式和指令

一 . I/O 指令寻址

存储器和 I/O 端口在两个独立的地址空间中, I/O端口的读、写用 IOR 和 IOW 控制信号实现,访问I/O 端口用专用的 IN 或 OUT 指令。

CPU

存储器 I/O 口

AB

DB

控制逻辑CB

MEMR MEMW IOR IOW

二 . 存储器映象的 I/O 寻址

存储器和 I/O 端口共用一个地址空间, I/O 端口的读、写用 RD 和 WR 控制信号实现,所有访问存储器的指令都可以用于 I/O端口。

CPU

存储器 I/O 口

AB

DB

RD

WR

Page 8: 第六章     I/O 接口

输入输出端口地址在指令中以立即数 n (8bit) 表明。直接寻址可寻址 256 个输入 / 输出端口。 IN AL , n 字节输入 (n 端口数据 ) AL IN AX , n 字输入 (n+1) : (n) AX OUT n , AL 字节输出 (AL) n 端口 OUT n , AX 字输出 (AX) n+1 :n

输入输出端口地址由 DX 寄存器 (16bit) 间接寻址。间接寻址可寻址 64K 个输入 / 输出端口。 IN AL , DX 字节输入 ((DX)) AL IN AX , DX 字输入 ((DX)+1) : ((DX)) AX OUT DX , AL 字节输出 (AL) (DX) OUT DX , AX 字输出 (AX) (DX)+1 : (DX)

三、 8086 的 I/O 指令

Page 9: 第六章     I/O 接口

第三节 CPU 与外设间的数据传送方式

输入: CPU 在执行 IN指令前,输入三态缓冲器已准备好。

输出: CPU 在执行 OUT 指令前,输出锁存器已空。

一、无条件传送

AB

外设输入数据

三态缓冲器

地址译码

RD

DB

n

输入端口 n

无条件输入

M/IO

输出外设数据 锁

器 地址译码

WR

DB

AB

n输出

端口 n

无条件输出

M/IO

Page 10: 第六章     I/O 接口

例:有 8 个模拟电压,共用一个 4 位十进制 BCD(16bit,2byte)A/D 转换器。由 CPU 控制 8 个继电器,依次实现 8 个模拟电压的 A/D 转换,并把数据存储在 DSIO 为首地址的内存单元。

11 20

8 位 8 位

8 8 8

88 8

P0P1P7

K0K1K7

输入数据 ( 模拟量 )

DB

M/ IO^RD^10 M/ IO^RD^11

M/IO^WR^20

CPU

缓冲寄存器功率放大器

10

. . . . . .

Page 11: 第六章     I/O 接口

输入数据口地址:

11H( 高 8 位 ) 、 10H( 低8 位 )

输出控制口地址: 20H注意: 1 、继电器触点闭合和释放需要时间等待。

2 、 A/D 转换器转换需要时间等待。

实现无条件传送的方法:

CPU 以足够延时等待使外设数据准备好

P0 初始吸合代码 01HDH

继电器全释放 00H DLDSIO 首地址 BX

断开所有继电器等待触点释放

选择继电器 , 开始 A/D 转换

等待触点闭合和 A/D 转换结束

数据输入并存放修改下一闭合继电器

修改存放地址

判终点

AGAIN

N

Y

Page 12: 第六章     I/O 接口

二、查询传送

CPU 需不断查询外设的状态,一旦外设满足数据传送的条件,就执行 IN 或 OUT 指令,读入或输出数据。

输入外设状态信号 Ready

Ready=1

输入数据

N

查询输入

Y

输入外设状态信号 Busy

Busy=1

输出数据

Y

查询输出

N

Page 13: 第六章     I/O 接口

查询输入接口电路(组成) IN AL , DATA_PORT

工作原理IN AL , STATUS_PORT

输入装置

锁存器

D R Q

三态缓冲

三态缓冲

地址译码

AB

数据端口

状态端口

D7

数据

选通

DB

Ready

RD

M/ IO

RD

+5V

M/ IO

Page 14: 第六章     I/O 接口

1 、数据准备好,选通信号输出正跳变将

数据锁存器

D 触发器置 1 ,作为 Ready 信号, D7=1

2 、查询状态信号,执行 IN AL ,状态口

Ready(bit7) AL

3 、若 Ready=1 ,执行 IN AL ,数据口

输入数据 AL ;

D 触发器复位, Ready=0

POLL : IN AL STATUS_PORT TEST AL , 80H JE POLL IN AL , DATA_PORT

查询输入的编程

Page 15: 第六章     I/O 接口

IN AL , STATUS_PORT

OUT DATA_PORT , AL 查询输出接口电路(组成)

工作原理

锁存器输

出装置

Q DR

三态缓冲

地址译码

器AB

数据端口

状态端口

D7

数据

启动

DB

ACKBusy

VCC

M/IO

RD

WR

M/IO

Page 16: 第六章     I/O 接口

3 、输出设备取走数据,应答信号 ACK 的负跳变 (恢复 ) 使D 触发器清“ 0” ,即置 Busy=0 ,允许 CPU 送出下一个数据

1 、查询状态信号,执行 指令 IN AL ,状态口 Busy(bit7) AL

2 、若 Busy =0 ,执行指令 OUT 数据口, AL , 输出数据 AL DB 锁存器 输出装置; D 触发器置 1 ,即置 Busy=1 ,表示忙碌,禁止输出

POLL : IN AL , STATUS_PORT TEST AL , 80H JNE POLL MOV AL , STORE ;从数据区取数 OUT DATA_PORT , AL

查询输出的编程

Page 17: 第六章     I/O 接口

例:查询数据输入,有 8 个模拟电压,一个 8bitA/D 转换器。由 CPU 控制一个 8 选 1 多路开关,以及 A/D 转换启动。依次实现 8 个模拟电压的 A/D 转换,并把数据存储在 DSTORE为首地址的内存单元中。(组成)

M/ IO^WR^43 2 4

A/D 转换

8bit bit0 8

D4

数据 READY

DB

M/IO^RD^3

M/ IO^RD^2CPU 数据

启动

输入数据

八个模拟量

D2

D1

D0

1 个模拟量 多路开关

Page 18: 第六章     I/O 接口

输入数据口地址: 3

输入状态口地址: 2

bit0 , A/D 转换结束信号

输出控制口地址: 4

bit0~2 ,多路开关选择输入端

bit4 , A/D 转换启动信号

START : MOV DL , 0F8H

LEA DI , DSTORE

AGAIN : MOV AL , DL

AND AL , 0EFH ;使 bit4=0

OUT 4 , AL ;停止 A/D

CALL DELAY ;延时等待 A/D

结束 MOV AL , DL

OUT 4 , AL ;启动 A/D

POLL : IN AL , 2 ;输入状态信号

SHR AL , 1 ;将状态信号 ;移到 CF

JNC POLL ;状态信号= 0 , IN AL, 3 ; 转 POLL

STORB ; (AL) ( DI )

INC DL ;改变模拟信号 ;编号

JNE AGAIN ;判终点

关于多路开关选择和 A/D 转换启动信号

DL D7 D6 D5 D4 D3 D2 D1 D0

模拟 0 1 1 1 1 1 0 0 0

…………………………………

模拟 7 1 1 1 1 1 1 1 1

终点 0 0 0 0 0 0 0 0

CF = 1

Page 19: 第六章     I/O 接口

无条件、查询传送都需要 CPU 的等待或不断查询,使CPU 的效率降低。中断传送:外设需要传送数据时,申请中断;当 CPU允许中断,在中断服务程序中执行 IN /OUT指令;然后返回主程序。

启动外设

主程序

外设准备好输入设备 Ready=

1输出设备 Busy=0

中断请求 中断响应 数据 IN/OUT

中断服务程序

IRET

中断响应

外设又一次准备好中断请求

三、 中断传送

Page 20: 第六章     I/O 接口

中断输入接口电路(组成)

数据准备就绪,发选通信号

向 CPU发中断请求

CPU响应中断,进入中断响应周期

中断服务程序中,读入数据

工作原理

AB

中断类型号 INTA

输入装置

锁存器

D R Q

三态缓冲

装置中断允许

地址译码

数据端口

数据

选通

DB

INTR

RD

M/IO

三态缓冲器DB

Page 21: 第六章     I/O 接口

1 、 DMA 传送的基本概念 无条件、查询、中断传送,每传送一个数据都需要 CPU干预一次,限制了数据传送的速度。

输入设备

输出设备CPU 内存

DMA ( Direct Memory Access ):是一种不需要 CPU

干预也不需要软件介入的高速数据传送方式。在外设 ( 如磁盘 ) 与内存之间成批传送数据时,完全由硬件完成外设与内存的数据传送,而不必 CPU 的干预。对这一数据传送过程进行控制的硬件称为 DMA 控制器( DMAC )。

四、直接存储器存取 DMA

Page 22: 第六章     I/O 接口

问题: (1) 数据传送需 AB 、 DB 、 CB 的参与;

(2) 通常情况下, AB 、 DB 、 CB 由 CPU 控制。

解决 : (1) 设置 DMA 控制器 DMAC 。当需要 DMA 时,由 DMAC 提供内存的地址线、数据串长度和必要的控制信号。

(2) 外设在需要进行 DMA 传送数据时,向 DMAC发出 DMA请求。 然后 DMAC向 CPU 提出 HOLD总线请求。 ( 3 ) CPU响应后,发 HLDA响应给 DMAC ,并将总线暂交 DMAC 管理。当 DMAC 接收到 HLDA后就可以接管总线,进行 DMA 传送。 ( 4 ) DMAC完成数据串传送后撤销 HOLD请求,CPU恢复对总线的控制。

Page 23: 第六章     I/O 接口

2 、 DMA操作的基本方法

( 1 ) . 周期挪用 (Cycle Stealing)

利用 CPU 不访问存储器的那些周期来实现 DMA操作。此时, DMAC 可以使用总线而不通知 CPU 也不会妨碍 CPU的工作。但关键是如何识别 CPU 可挪用的周期,以免与 CPU 的操作发生冲突。某些 CPU 能产生一个表示存储器是否正在被使用的信号( M6800 的 VMA )。

特点:不影响不减慢 CPU 的操作;

需要复杂的时序电路;

数据传送过程是不连续的和不规则的

Page 24: 第六章     I/O 接口

( 2 ) . 周期扩展

当需要进行 DMA操作时,由 DMAC发出请求信号给专门的时钟电路,时钟电路将供给 CPU 的时钟周期加宽,而提供给存储器和 DMAC 的时钟周期不变。 CPU 在加宽的时钟周期内操作不往下进行,而这加宽的时钟周期相当于若干个正常的时钟周期,用于进行 DMA操作。加宽的时钟周期结束后, CPU仍按正常的时钟继续操作。

特点:降低了 CPU 的处理速度;

需要专门的时钟发生器 /驱动电路;

数据一次只能传送一个字节。

Page 25: 第六章     I/O 接口

( 3 ) . CPU 停机

当需要进行 DMA操作时, DMAC向 CPU发出 DMA请求信号,迫使 CPU 在先行的机器周期结束后,使地址、数据和部分控制信号线处于三态,即让出总线控制权,并给出一个 DMA响应信号,使 DMAC 可以控制总线进行数据传送。直到 DMA操作完成, CPU再恢复对总线的控制权,继续执行被中断的程序。

特点:在进行 DMA 传送期间, CPU 处于空闲状态,降低

了 CPU 的利用率;

影响 CPU 对中断的响应和对动态 RAM 的刷新;

可进行单字节传送,也可进行数据块传送。

Page 26: 第六章     I/O 接口

3. DMA 传送方式:

(1). 单字节方式: 每次 DMA请求只传送一个字节数据,每传送一个字节,都撤消 DMA请求信号并释放总线。

(2). 字节(字符)组方式: 每次 DMA请求连续传送一个数据块,待规定长度的数据块传送完了以后才撤消 DMA请求信号并释放总线。

Page 27: 第六章     I/O 接口

(1) 有 4 个独立的 DMA 通道;

(2) 各通道可分别允许和禁止;

(3) 各通道的 DMA请求的优先权可编程控制 (固定 /循环 ) ;

(4) 各通道传送数据的最大长度可达 64KB ,字节计数器 16bit ;

(5) 四种工作方式:

单字节传送、数据块传送、请求传送、级连

(6) 允许外界通过 EOP 信号来结束 DMA 传送或重新初始化。

DMA 控制器 (Intel8237)

Intel8237/8237-2是可编程的 DMA 控制器,主要功能:

Page 28: 第六章     I/O 接口

第四节 I/O 译码电路和 PC 机的地址分配

Y0

Y1

Y2

Y3

Y4

Y5

Y6

Y7

&

&

A15A14

A13A12

A5

A4

A3

M/IO

G1

G2A

G2B

C

B

A

一、 I/O 端口译码电路举例

Page 29: 第六章     I/O 接口

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 地址范围 (H)

1 1 0 0 0 0 0 0 0 0 0 0 0 C000C007

1 1 0 0 0 0 0 0 0 0 0 0 1 C008C00F

1 1 0 0 0 0 0 0 0 0 0 1 0 C010C017

1 1 0 0 0 0 0 0 0 0 0 1 1 C018C01F

1 1 0 0 0 0 0 0 0 0 1 0 0 C020C027

1 1 0 0 0 0 0 0 0 0 1 0 1 C028C02F

1 1 0 0 0 0 0 0 0 0 1 1 0 C030C037

1 1 0 0 0 0 0 0 0 0 1 1 1 C038C03F

I/O 译码电路的端口地址分配表

Page 30: 第六章     I/O 接口

二、 PC 机的 I/O 端口地址分配

Y0

Y1

Y2

Y3

Y4

Y5

Y6

Y7

A9

A8

A7

A6

A5

G1

G2A

G2B

C

B

A

&

&

AEN

IOW

DMACS ( 8237 )

WRTDMAPG(写 DMA页面寄存器)

T/CCS ( 8253 )PPICS ( 8255 )

INTRCS ( 8259 )

WRTNMIREG(写 NMI屏蔽寄存器)

系统板上 I/O 端口的译码电路

Page 31: 第六章     I/O 接口

PC/XT 机的系统板地址分配表

地址范围( H ) I/O 设备(端口)

000—01F ( 00—0F ) 8237A-5 DMA 控制器

020—03F ( 20—21 ) 8259A 中断控制器

040—05F ( 40—43 ) 8253-5 计数器 / 定时器

060—07F ( 60—63 ) 8255A-5 并行接口

080—09F ( 80—83 ) DMA页寄存器

0A0—0BF ( A0 ) NMI屏蔽寄存器

0C0—0DF 保留

0E0—0FF 保留