第 7 章 输入 / 输出系统

41
1 第7第 第第 / 第第第

Upload: lorin

Post on 16-Jan-2016

146 views

Category:

Documents


0 download

DESCRIPTION

第 7 章 输入 / 输出系统. 7.1 概 述. 7.1.1 接口电路. 定义: 是 CPU 与 “ 外部世界 ” 的 连接电路 ,负责 “ 中转 ” 各种 信息 。. I/O 接口与 I/O 设备. 不同 I/O 设备对应 I/O 接口不同。. I/O 接口受 CPU 控制, I/O 设备受 I/O 接口控制。. 为增加通用性, I/O 接口的接口电路一般均具有可编程功能。. 微机的应用离不开与外部设备接口的设计、选用和连接。. 微机接口技术是编程人员的一项基本技能。. 1 I/O 接口功能. 数据缓冲功能: 通过寄存器或锁存器实现。. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 7 章  输入 / 输出系统

1

第 7 章 输入 / 输出系统

Page 2: 第 7 章  输入 / 输出系统

2

7.1 概 述7.1.1 接口电路

定义:是 CPU 与“外部世界”的连接电路,负责“中转”各种信息。

Page 3: 第 7 章  输入 / 输出系统

3

I/O 接口与 I/O 设备 不同 I/O 设备对应 I/O 接口不同。 I/O 接口受 CPU 控制, I/O 设备受 I/O 接口控制。 为增加通用性, I/O 接口的接口电路一般均具有可编程功能。 微机的应用离不开与外部设备接口的设计、选用和连接。 微机接口技术是编程人员的一项基本技能。

Page 4: 第 7 章  输入 / 输出系统

4

1 I/O 接口功能 数据缓冲功能:通过寄存器或锁存器实现。 存放数据的寄存器或锁存器称之为数据口。 接受和执行 CPU 命令功能: 存放 CPU 命令代码的寄存器称之为命令口, 存放执行状态信息的寄存器称之为状态口。 设备选择功能: CPU 通过地址选择不同外设。 即 CPU 通过地址选择不同 I/O 接口。 信号转换功能:协调总线信号与 I/O 设备信号。 转换包括信号的逻辑关系、时序配合和电平转换。 可编程功能:增加接口的灵活性和智能性。

Page 5: 第 7 章  输入 / 输出系统

5

2 接口电路分类接口按通用性可分为两类:专用接口和通用接口。通用接口是可供多种外部设备使用的标准接口,它可以连接各种不同的外设而不必增加附加电路。接口按可编程性也分为两类:可编程接口和不可编程接口。接口按与外设数据的传送方式可分为并行 I/O 接口和串行 I/O 接口两种。

Page 6: 第 7 章  输入 / 输出系统

6

I/O 接口组成 接口由接口硬件和接口软件组成。1. 接口硬件

Page 7: 第 7 章  输入 / 输出系统

7

CPU 侧引脚信号: 地址信号:选择 I/O 接口及 CPU 命令分类; 数据信号:根据命令类型,送到对应的 REG 中,或从 REG 中取得数据或状态; 控制信号:控制命令的执行、时序、信号同步;

外设侧引脚信号: 数据信号:接口缓冲 REG 与外设间的数据交换; 状态信号:外设工作状态送给接口的状态 REG ; 控制信号:接口的内部控制逻辑控制外设工作的控制信号和同步信号。

状态信号:接口的部分工作状态信号。

Page 8: 第 7 章  输入 / 输出系统

8

2. 接口软件(设备驱动程序) 初始化程序段:设置接口工作方式及初始条件。 传送方式处理程序段: CPU 针对不同的 I/O 设备有不同的处理方式。 主控程序段:完成接口任务的程序。 程序终止与退出程序段:接口电路硬件保护及操作系统中数据恢复。 辅助程序段:提供人 - 机对话手段。

内部控制逻辑: 根据控制 REG 、状态 REG 、总线控制信号及外设状态信号控制 I/O 接口的工作。

Page 9: 第 7 章  输入 / 输出系统

9

7.1.2 输入 / 输出端口1.I/O 端口 供 CPU 直接存取访问的接口中的寄存器或电路。 接口中的命令口、状态口和数据口均为 I/O 端口。2.I/O 端口地址 接口中的不同寄存器或电路的编号。 CPU 通过命令对接口进行控制。3. 命令、接口与 I/O 端口关系 接口 :I/O 端口 : 命令 ----1:n:m*n 。 CPU 通过 I/O 端口地址区分不同的接口。

Page 10: 第 7 章  输入 / 输出系统

10

二、 I/O 端口编址1.I/O 统一编址(存储器映象 I/O 编址) 一个 I/O 端口等同于一个存储器单元。 优点: 对 I/O 端口的访问命令与对存储器单元访问相同,不必使用专用 I/O 指令 ( 统一用 LOAD/STORE) ; 外设数目或 I/O 寄存器数几乎不受限制。 缺点: I/O 端口占用部分 MEM 空间,可用 MEM 空间减小; 对 MEM 访问指令较长,执行速度较慢; I/O 端口地址译码时间较长。

Page 11: 第 7 章  输入 / 输出系统

11

2.I/O独立编址 I/O 端口地址空间与存储器地址空间相互独立。 应用: Z-80系列和 x86系列均采用此方式。 优点: MEM 地址空间不受 I/O 端口地址空间影响; I/O 端口数量不多,占用地址线少,地址译码简单,速度较快; 使用专用 I/O 命令 (IN/OUT) ,与 MEM 访问命令(LOAD/STORE) 有明显区别 ,便于理解和检查。

Page 12: 第 7 章  输入 / 输出系统

12

缺点: 专用 I/O 指令增加指令系统复杂性,且 I/O指令类型少,程序设计灵活性较差; 要求处理器提供 MEMR/MEMW和 IOR/IOW两组控制信号,增加了控制逻辑的复杂性。3.Intel系列微机 I/O 编址 Intel系列微处理器支持 I/O独立编址方式和 I/O 统一编址(存储器映象编址)方式。

Intel系列微机系统仅支持 I/O独立编址方式。 I/O 统一编址时, I/O 地址不能缓存。

Page 13: 第 7 章  输入 / 输出系统

13

三、 PC 系列微机 I/O 端口访问

2.I/O 端口地址寻址方式 I/O 端口支持直接寻址和间接寻址方式。 OUT 60H, AL ; OUT DX, 34H ;3.I/O 端口与累加器间 I/O 指令 格式: IN、 OUT 。

1.I/O 端口地址空间 I/O 端口地址空间: 64K(A0-A15) 个 8位端口空间。 I/O 端口地址信号:由地址线信号和 IOW/IOR 信号线组成。

Page 14: 第 7 章  输入 / 输出系统

14

4.I/O 端口与存储器间 I/O 指令 格式: INSB(W、 D) 、 OUTSB(W、 D) 。 参数:用 DX指定 I/O 端口地址,输入 / 输出时的目的 /源 RAM 地址用 ES : DI(EDI)/DS :SI(ESI) 指定。 结果:通过前缀 REP 连续传送。5.I/O 端口与存储器端口访问的区别 命令类型: IN/OUT 与 LOAD/STORE 控制信号线: IOW/IOR 与 MEMW/MEMR 地址信号线: A0-A15与 A0-A31

Page 15: 第 7 章  输入 / 输出系统

15

四、 Pentium 的 I/O 保护 I/O 保护在保护模式下有效,在实地址模式下无效。1.I/O特权级 IOPL 保护 保护通过比较当前任务的特权级 CPL 和标志寄存器的 IOPL字段实现的。 若 CPL≤IOPL ,可执行 IN、 OUT 、 INS 、 OUTS 、 CLI 、 STI 等敏感指令 ( 对 IOPL敏感 ) ;否则不行。 每个任务都有自己的 IOPL , 0级特权的过程可通过POPF和 IRET 指令修改任务的 IOPL 。

Page 16: 第 7 章  输入 / 输出系统

16

2.I/O允许位映象保护 I/O允许位映象用来修正 IOPL 对 I/O敏感指令的影响,允许低特权的程序访问某些 I/O 端口。 I/O允许位映象是一个位向量,每位对应一个端口的操作权限 (0表示允许 ) 。 操作系统可通过改变任务 TSS 中的 I/O允许映象来为某任务分配端口。

Page 17: 第 7 章  输入 / 输出系统

17

第四节 接口分析与设计方法一、 x86系列微机接口分析1.I/O 接口硬件分类 系统板上 I/O芯片和 I/O扩展槽接口卡。2.I/O 端口地址分配 PC 系列 I/O 地址线有 16根,对应 64K空间; PC/XT 的 I/O 端口译码只使用了 A0-A9 ,共 1024个端口,地址范围为 0000H~03FFH。 不同的微机系统对 I/O 端口地址的分配不同。 初期: A9=0端口 (512 个 ) 为系统板所用,其他端口 (512 个 ) 为扩展槽所用。

Page 18: 第 7 章  输入 / 输出系统

18

I/O芯片名称 地址范围

DMAC1 DMAC2 DMA 页面寄存器

0000-001FH 00C0-00DFH 0080-009FH

中断控制器 1 中断控制器 2

0020-003FH 00A0-00BFH

定时器 并行接口芯片 ( 键盘接口 ) RT/CMOS RAM 协处理器

0040-005FH 0060-006FH 0070-007FH 00F0-00FFH

系统板 I/O 接口芯片端口地址 (0000H-00FFH) :

PC/AT : A8=A9=0端口 (256个 ) 为系统板所用,其他端口 (768个 ) 为扩展槽所用。

返回 29 页

Page 19: 第 7 章  输入 / 输出系统

19

扩展槽 I/O 接口卡端口地址 (0100H-03FFH) :I/O 接口名称 地址范围

游戏控制卡 0200-020FH 并行口控制卡 1 并行口控制卡 2

0370-037FH 0270-027FH

串行口控制卡 1 串行口控制卡 2

03F8-03FFH 02F8-02FFH

原型插件板 ( 用户可用 ) 0300-031FH 同步通信卡 1 同步通信卡 2

03A0-03AF 0380-038FH

单显 MDA 彩显 CGA 彩显 EGA/VGA

03B0-03BFH 03D0-03DFH 03C0-03CFH

软驱控制卡 硬驱控制卡

03F0-03FFH 01F0-01FFH

PC 网卡 0360-036FH

Page 20: 第 7 章  输入 / 输出系统

20

用户 I/O 端口地址选用原则: 系统配置占用的端口地址一律不能用; 厂家声明保留的端口地址不要用; 其余端口地址可用,为避免冲突最好采用 DIP 。3.I/O 端口地址译码方法 一个 I/O 接口对应多个连续 I/O 端口。 I/O 接口芯片片选( CS )译码: IOW/IOR 信号 ( 有效 ) 、 AEN信号 (无效 ) 和 I/O端口地址高位。 I/O 接口芯片内部端口译码: I/O 端口地址低位。

Page 21: 第 7 章  输入 / 输出系统

21

例 1 :并行接口使用 8255A芯片,地址空间 60H-63H。

A1

A0

A9-A2

地址总线

RD

WR

RESET

IO/MAEN

控制总线

CS

D0-D7数据总线

RD

WR

RESET

A1

A0

8255A

PA0-7

PB0-7

PC0-7

多个接口时,采用单独译码 /集中译码?

返回下页

Page 22: 第 7 章  输入 / 输出系统

22

数据总线地址总线控制总线

CPU

D7-D0

CSAx-A0

WR

RD

设备侧信号

D7-D0

CSAx-A0

WR

RD

设备侧信号

8259 8253

MEM

Y0

Y7

ABC

G2B

G2A

G1

15

14

13

12

11

10

9

7

1

2

3

4

5

6

74LS138

DMA

8259

8253

8255

系统…

空闲

00H

20H

40H

60H

3FFH

1FH

3FH

5FH

7FH

例 2 :多个接口集中译码。

如何区分 MEM 和 I/O? 转上页 返回 26 页

Page 23: 第 7 章  输入 / 输出系统

23

4.I/O 端口访问 CPU 通过 I/O 指令对 I/O 接口进行访问。 汇编语言指令: IN、 OUT 。 C语言指令: inportb(inport) 、 outportb(outport) 。 VC++指令: _inp(_inpw) 、 _outp(_outpw) 。 例:读取 CMOS 信息。

main(){ int i; unsigned char c_CmosMessage[64]; for (i=0;i<=63;i++) { outportb(0x70,i); c_CmosMessage[i]=inportb(0x71) ; } printf("CMOS 信息读取完毕。 \n");}

;功能:读取 CMOS 信息;调用: AL=CMOS 地址;返回: AL=CMOS 内容 proc_read_cmos proc cli or al,80h ;屏蔽 NMI out 70h,al jmp $+2 ;延迟 in al,71h ;读 CMOS 数据 sti ret proc_read_cmos endp

Page 24: 第 7 章  输入 / 输出系统

24

5.I/O 指令与接口实现 执行 CPU 指令: MOV DX, 42H OUT DX, 8AH 控制总线: IOW有效、 IOR无效、 MEMR/MEMW无效、 AEN无效。 地址总线:将42H写入 A9~ A0。 译 码 器:根据 DX高位译码, Y2 有效,其他 Yx无效。 接口芯片: 8253 工作,其他接口芯片不工作。 接口电路: 8253 对应接口电路应答选中信号, 8253 根据 DX低位选择相应的寄存器。 8253 : 接受数据总线 (D7~ D0) 数据 (8AH) ,写入所选寄存器。

转 24 页

Page 25: 第 7 章  输入 / 输出系统

25

二、 I/O 端口地址译码电路的几种形式1.固定式端口地址译码 接口中只有一个端口时可采用门电路构成。 接口中有多个端口时一般采用译码器电路构成,常见的译码器有 74LS138、 74LS154等。 74LS138译码器:

工作条件: G1=1 , G2A=G2B=0。

Y0

Y7

A

B

C

G2B

G2A

G1

15

14

13

12

11

10

9

7

1

2

3

4

5

6

74LS138

工作原理: 将复合的输入信号变为枚举的输出信号。

Page 26: 第 7 章  输入 / 输出系统

26

输 入 输 出G1G2AG2B C B A Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0

1 0 0 0 0 0 1 1 1 1 1 1 1 01 0 0 0 0 1 1 1 1 1 1 1 0 11 0 0 0 1 0 1 1 1 1 1 0 1 11 0 0 0 1 1 1 1 1 1 0 1 1 11 0 0 1 0 0 1 1 1 0 1 1 1 11 0 0 1 0 1 1 1 0 1 1 1 1 11 0 0 1 1 0 1 0 1 1 1 1 1 11 0 0 1 1 1 0 1 1 1 1 1 1 10 X X X X X 1 1 1 1 1 1 1 1X 1 X X X X 1 1 1 1 1 1 1 1X X 1 X X X 1 1 1 1 1 1 1 1

输入 / 输出真值表:

CBA 连续时, Y0~ Y7亦为连续的。

Page 27: 第 7 章  输入 / 输出系统

27

Y0

Y7

A

B

C

G2B

G2A

G1

15

14

13

12

11

10

9

7

1

2

3

4

5

6

74LS138

A5

A6

A7

A8

A9

AEN’

DMACS(8237)

INTRCS(8259)

T/C CS(8253)

PPICS(8255)

WRTDMAPG≥1

≥1 WRTNMIREG

IOW

74LS138在 PC 机系统板端口译码的应用:

转 20 页为何中断控制 1 端口地址为 0020H-003FH?AEN’=AEN∩IO/M 。

Page 28: 第 7 章  输入 / 输出系统

28

Y0

Y7

A

B

C

G2B

G2A

G1

15

14

13

12

11

10

9

7

1

2

3

4

5

6

74LS138

A3

A4

A5

A8

A9

AEN’

?~?

?~?≥1A6

每个出端对应接口的端口数量?Y1 、 Y4对应端口地址?

8个08H(88H) 、 20H(A0H)

Page 29: 第 7 章  输入 / 输出系统

29

7.2 微机系统与与输入 / 输出设备信息交换

7.2.1 无条件传送方式 特点: I 时假设外设已准备好, O 时假设外设空闲。 要求:接口 I 时加缓冲器, O 时加锁存器。 应用:对简单外设的操作。7.2.2 查询方式 工作原理: CPU查询外设已准备好后,才传送数据。 特点: CPU 与外设间自然同步。 要求:不需要增加额外的硬件电路。 应用:适用在 CPU 不太忙且传送速度要求不高时。

Page 30: 第 7 章  输入 / 输出系统

30

7.2.3 中断传送方式 特点: CPU 与外设可同时工作。 要求:接口中需要中断控制逻辑支持。 应用:适用于非高速度大量数据传送时。7.2.4 直接存储器存取 (DMA) 方式 特点:数据的传送不经过 CPU , I/O 设备管理由 CPU 控制,简化 CPU 对 I/O 的控制。 要求:需要 DMA 控制器及相关逻辑支持。 应用:适用与高速度大量数据传送时。

Page 31: 第 7 章  输入 / 输出系统

31

7.2.5 I/O 处理机( IOP )方式 特点: I/O 处理机接管了 CPU 的各种 I/O 操作及 I/O 控制功能, CPU 能与 IOP 并行工作。 要求:需要 IOP支持。 应用:高速 I/O归 IOP管理,低速 I/O 设备归 CPU管理。

Page 32: 第 7 章  输入 / 输出系统

32

8253的组成与功能

• 1. 3个独立的 16位计数器

3 个计数器分别为计数器 0 、计数器 1 、计数器 2 ,每个计数器的内部逻辑结构如图 4.8所示。

如图 4.6、图 4.7所示为 8253/8254的内部结构及引脚图。

7.3 可编程计数 / 定时器 8254

Page 33: 第 7 章  输入 / 输出系统

33

图 4.6 8253/8254 的内部结构示意图

Page 34: 第 7 章  输入 / 输出系统

34

图4.7 8253

引脚图

Page 35: 第 7 章  输入 / 输出系统

35

图 4.8 8253/8254 计数器内部逻辑图

Page 36: 第 7 章  输入 / 输出系统

36

• 2.控制命令寄存器

此寄存器用来保存来自 CPU 送入的控制字。每个计数器都有一个控制命令寄存器,用于保存该计数器的控制信息。控制字将决定计数器的工作方式、计数形式及输出方式,也能决定应如何装入计数器初值。 8253 的 3 个控制寄存器只占用一个地址号,而靠控制字中最高二位来指定当前的控制字是发给哪一个计数器的。控制寄存器只能写入,不能读取。

Page 37: 第 7 章  输入 / 输出系统

37

• 3.读 /写逻辑

读 /写逻辑的任务是接收来自 CPU 的控制信号,完成对 8253 各计数寄存器的读/写操作。这些控制信号包括读信号 RD 、写信号 WR 、片选信号 CS 和片内寄存器对址信号 A0 、 A1 。

Page 38: 第 7 章  输入 / 输出系统

38

• 4.数据总线缓冲器

这是一个双向、三态 8位缓冲器。它用于 8253 和系统数据总线连接。 CPU 通过数据总线缓冲器将控制命令字和计数值写入 8253 计数器,或者从 8253 计数器读取当前计数值。

8253 的 8位数据线 D0~D7 通常与系统数据总线 D0~D7 相连。 8253共占用 4 个 I/O 地址。 8253 各端口的地址分配见表 4.8所示。

Page 39: 第 7 章  输入 / 输出系统

39

表 4.8 8253 端口的地址分配

返回本节

Page 40: 第 7 章  输入 / 输出系统

40

8253与系统的连接应用实例

• 图 4.9 为 8253 用作方波发生器与 8088 总线的接口方法。图中仅用了 A7~A2作为 8253 片选地址线,产生片选信号 Y1与 8253 的 CS 端相连。要求计数器 2 用作方波发生器产生 40KHz 方波输出。已知 CLK2 时钟端输入信号频率为 2MHz 。

Page 41: 第 7 章  输入 / 输出系统

41

图 4.9 8253 与 8088 总线的连接

返回本节