第 7 章 输入 / 输出系统
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 PresentationTRANSCRIPT
1
第 7 章 输入 / 输出系统
2
7.1 概 述7.1.1 接口电路
定义:是 CPU 与“外部世界”的连接电路,负责“中转”各种信息。
3
I/O 接口与 I/O 设备 不同 I/O 设备对应 I/O 接口不同。 I/O 接口受 CPU 控制, I/O 设备受 I/O 接口控制。 为增加通用性, I/O 接口的接口电路一般均具有可编程功能。 微机的应用离不开与外部设备接口的设计、选用和连接。 微机接口技术是编程人员的一项基本技能。
4
1 I/O 接口功能 数据缓冲功能:通过寄存器或锁存器实现。 存放数据的寄存器或锁存器称之为数据口。 接受和执行 CPU 命令功能: 存放 CPU 命令代码的寄存器称之为命令口, 存放执行状态信息的寄存器称之为状态口。 设备选择功能: CPU 通过地址选择不同外设。 即 CPU 通过地址选择不同 I/O 接口。 信号转换功能:协调总线信号与 I/O 设备信号。 转换包括信号的逻辑关系、时序配合和电平转换。 可编程功能:增加接口的灵活性和智能性。
5
2 接口电路分类接口按通用性可分为两类:专用接口和通用接口。通用接口是可供多种外部设备使用的标准接口,它可以连接各种不同的外设而不必增加附加电路。接口按可编程性也分为两类:可编程接口和不可编程接口。接口按与外设数据的传送方式可分为并行 I/O 接口和串行 I/O 接口两种。
6
I/O 接口组成 接口由接口硬件和接口软件组成。1. 接口硬件
7
CPU 侧引脚信号: 地址信号:选择 I/O 接口及 CPU 命令分类; 数据信号:根据命令类型,送到对应的 REG 中,或从 REG 中取得数据或状态; 控制信号:控制命令的执行、时序、信号同步;
外设侧引脚信号: 数据信号:接口缓冲 REG 与外设间的数据交换; 状态信号:外设工作状态送给接口的状态 REG ; 控制信号:接口的内部控制逻辑控制外设工作的控制信号和同步信号。
状态信号:接口的部分工作状态信号。
8
2. 接口软件(设备驱动程序) 初始化程序段:设置接口工作方式及初始条件。 传送方式处理程序段: CPU 针对不同的 I/O 设备有不同的处理方式。 主控程序段:完成接口任务的程序。 程序终止与退出程序段:接口电路硬件保护及操作系统中数据恢复。 辅助程序段:提供人 - 机对话手段。
内部控制逻辑: 根据控制 REG 、状态 REG 、总线控制信号及外设状态信号控制 I/O 接口的工作。
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 端口地址区分不同的接口。
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 端口地址译码时间较长。
11
2.I/O独立编址 I/O 端口地址空间与存储器地址空间相互独立。 应用: Z-80系列和 x86系列均采用此方式。 优点: MEM 地址空间不受 I/O 端口地址空间影响; I/O 端口数量不多,占用地址线少,地址译码简单,速度较快; 使用专用 I/O 命令 (IN/OUT) ,与 MEM 访问命令(LOAD/STORE) 有明显区别 ,便于理解和检查。
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 地址不能缓存。
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 信号线组成。
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
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 。
16
2.I/O允许位映象保护 I/O允许位映象用来修正 IOPL 对 I/O敏感指令的影响,允许低特权的程序访问某些 I/O 端口。 I/O允许位映象是一个位向量,每位对应一个端口的操作权限 (0表示允许 ) 。 操作系统可通过改变任务 TSS 中的 I/O允许映象来为某任务分配端口。
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 个 ) 为扩展槽所用。
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 页
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
20
用户 I/O 端口地址选用原则: 系统配置占用的端口地址一律不能用; 厂家声明保留的端口地址不要用; 其余端口地址可用,为避免冲突最好采用 DIP 。3.I/O 端口地址译码方法 一个 I/O 接口对应多个连续 I/O 端口。 I/O 接口芯片片选( CS )译码: IOW/IOR 信号 ( 有效 ) 、 AEN信号 (无效 ) 和 I/O端口地址高位。 I/O 接口芯片内部端口译码: I/O 端口地址低位。
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
多个接口时,采用单独译码 /集中译码?
返回下页
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 页
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
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 页
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
工作原理: 将复合的输入信号变为枚举的输出信号。
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亦为连续的。
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 。
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)
29
7.2 微机系统与与输入 / 输出设备信息交换
7.2.1 无条件传送方式 特点: I 时假设外设已准备好, O 时假设外设空闲。 要求:接口 I 时加缓冲器, O 时加锁存器。 应用:对简单外设的操作。7.2.2 查询方式 工作原理: CPU查询外设已准备好后,才传送数据。 特点: CPU 与外设间自然同步。 要求:不需要增加额外的硬件电路。 应用:适用在 CPU 不太忙且传送速度要求不高时。
30
7.2.3 中断传送方式 特点: CPU 与外设可同时工作。 要求:接口中需要中断控制逻辑支持。 应用:适用于非高速度大量数据传送时。7.2.4 直接存储器存取 (DMA) 方式 特点:数据的传送不经过 CPU , I/O 设备管理由 CPU 控制,简化 CPU 对 I/O 的控制。 要求:需要 DMA 控制器及相关逻辑支持。 应用:适用与高速度大量数据传送时。
31
7.2.5 I/O 处理机( IOP )方式 特点: I/O 处理机接管了 CPU 的各种 I/O 操作及 I/O 控制功能, CPU 能与 IOP 并行工作。 要求:需要 IOP支持。 应用:高速 I/O归 IOP管理,低速 I/O 设备归 CPU管理。
32
8253的组成与功能
• 1. 3个独立的 16位计数器
3 个计数器分别为计数器 0 、计数器 1 、计数器 2 ,每个计数器的内部逻辑结构如图 4.8所示。
如图 4.6、图 4.7所示为 8253/8254的内部结构及引脚图。
7.3 可编程计数 / 定时器 8254
33
图 4.6 8253/8254 的内部结构示意图
34
图4.7 8253
引脚图
35
图 4.8 8253/8254 计数器内部逻辑图
36
• 2.控制命令寄存器
此寄存器用来保存来自 CPU 送入的控制字。每个计数器都有一个控制命令寄存器,用于保存该计数器的控制信息。控制字将决定计数器的工作方式、计数形式及输出方式,也能决定应如何装入计数器初值。 8253 的 3 个控制寄存器只占用一个地址号,而靠控制字中最高二位来指定当前的控制字是发给哪一个计数器的。控制寄存器只能写入,不能读取。
37
• 3.读 /写逻辑
读 /写逻辑的任务是接收来自 CPU 的控制信号,完成对 8253 各计数寄存器的读/写操作。这些控制信号包括读信号 RD 、写信号 WR 、片选信号 CS 和片内寄存器对址信号 A0 、 A1 。
38
• 4.数据总线缓冲器
这是一个双向、三态 8位缓冲器。它用于 8253 和系统数据总线连接。 CPU 通过数据总线缓冲器将控制命令字和计数值写入 8253 计数器,或者从 8253 计数器读取当前计数值。
8253 的 8位数据线 D0~D7 通常与系统数据总线 D0~D7 相连。 8253共占用 4 个 I/O 地址。 8253 各端口的地址分配见表 4.8所示。
39
表 4.8 8253 端口的地址分配
返回本节
40
8253与系统的连接应用实例
• 图 4.9 为 8253 用作方波发生器与 8088 总线的接口方法。图中仅用了 A7~A2作为 8253 片选地址线,产生片选信号 Y1与 8253 的 CS 端相连。要求计数器 2 用作方波发生器产生 40KHz 方波输出。已知 CLK2 时钟端输入信号频率为 2MHz 。
41
图 4.9 8253 与 8088 总线的连接
返回本节