1
第二章 输入输出与接口技术
2
第一节 接口概述一,I/O接口基本概念
1、接口定义定义,是 CPU与,外部世界,的 连接电路,负责,中转,各种 信息 。
3
分类,存储器接口和 I/O接口。
位置,介于系统总线与外部设备之间。
2,I/O接口与 I/O设备不同 I/O设备对应 I/O接口不同。
I/O接口受 CPU控制,I/O设备受 I/O接口控制。
为增加通用性,I/O接口的接口电路一般均具有可编程功能。
微机的应用离不开与外部设备接口的设计、选用和连接。
微机接口技术是编程人员的一项基本技能。
4
二,I/O接口功能数据缓冲功能,通过寄存器或锁存器实现。
存放数据的寄存器或锁存器称之为 数据口 。
接受和执行 CPU命令功能:
存放 CPU命令代码的寄存器称之为 命令口,
存放执行状态信息的寄存器称之为 状态口 。
信号转换功能,协调总线信号与 I/O设备信号。
转换包括信号的逻辑关系、时序配合和电平转换。
可编程功能,增加接口的灵活性和智能性。
5
三,I/O接口组成
I/O接口由接口硬件和接口软件组成。
1、接口硬件返回下页 返回下二页 返回下三页 返回 35页
6
(1)CPU侧引脚信号转上页思考 1,CPU对接口有哪些操作?如何表示?
思考 2,CPU对接口的软件命令如何分解的?
思考 3,接口如何识别已分解的软件命令?
地址总线信号 (I),区分接口的不同端口或 CPU命令;
数据总线信号 (I/O),根据端口或命令类型,送数据到对应的 REG中,或从 REG中取得数据或状态;
控制总线信号 (I),接口识别总线命令并控制执行;
状态总线信号 (O),接口为完成总线命令所需的响应信号。
转 29页
7
(2)外设侧引脚信号数据信号,接口的缓冲 REG与外设间的数据交换信号,缓冲 REG分输入和输出缓冲;
状态信号,外设工作状态送给接口的状态 REG;
控制信号,接口的内部控制逻辑控制外设工作的控制、时序和同步信号。
转上二页思考 1,从哪些方面实现 CPU侧数据与外设侧数据的转换?
思考 2,外设侧信号及时序的源头在哪里?
8
(3)内部控制逻辑根据总线信号完成与 CPU的通讯( CS#有效时);
根据控制 /状态 REG、数据缓冲器控制外设侧信号。
转上三页不与 CPU通信按新命令控制外设按 I/O接口信号处理其它与接口无关指令
I/O接口
I/O设备 按 I/O接口信号处理
CPU OUT DX,AL
CPU侧 接收新命令外设侧 按旧命令控制外设
CPU对接口的控制与接口对外设的控制是独立的!
例,并行接口 8255有三个设备端 8位口,如何设计其外部接口?如何节省端口数量?
9
2、接口软件(设备驱动程序)
初始化程序段,设置接口工作方式及初始条件。
传送方式处理程序段,CPU针对不同的 I/O设备有不同的处理方式。
主控程序段,完成接口任务的程序。
程序终止与退出程序段,接口电路硬件保护及操作系统中数据恢复。
辅助程序段,提供人 -机对话手段。
10
第二节 数据传输控制方式一、程序控制方式
1、无条件传送方式特点,I时假设外设已准备好,O时假设外设空闲。
要求,接口 I时加缓冲器,O时加锁存器。
应用,对简单外设的操作。
2、条件传送方式(查询方式)
工作原理,CPU查询外设已准备好后,才传送数据。
特点,CPU与外设间自然同步、串行工作。
要求,不需要增加额外的硬件电路。
应用,适用在 CPU不太忙且传输速度要求不高时。
11
3、中断传送方式特点,CPU与外设可同时工作。
要求,接口中需要中断控制逻辑支持。
应用,适用于非高速度大量数据传输时。
二、直接存储器存取 (DMA)方式特点,数据传输不经过 CPU,I/O设备管理由 CPU控制,
简化 CPU对 I/O的控制。
要求,需要 DMA控制器及相关逻辑支持。
应用,适用与高速度大量数据传输时。
12
三,I/O处理机( IOP)方式特点,I/O处理机接管了 CPU的各种 I/O操作及 I/O控制功能,CPU能与 IOP并行工作。
要求,需要 IOP支持。
应用,高速 I/O归 IOP管理,低速 I/O设备归 CPU管理。
13
第三节 I/O编址与访问一,I/O端口
1,I/O端口供 CPU直接访问的接口中的 REG或电路。
接口中的命令口、状态口和数据口均为 I/O端口。
2,I/O端口地址接口中的不同 REG或电路的编号。
CPU通过命令中地址对接口中不同端口进行访问。
3、命令、接口与 I/O端口关系接口,I/O端口,命令 ----1:n:m*n。
CPU通过 I/O端口地址 (已约定 )区分不同的接口。
14
二,I/O端口编址
1,I/O统一编址(存储器映象 I/O编址)
一个 I/O端口等同于一个存储器单元。
MEM
I/O设备
N
X
X-1
0
MOV指令
2,I/O独立编址
I/O端口地址空间与存储器地址空间相互独立。
MEM I/O设备
X-1
0
MOV指令 IN/OUT指令
N-X
0
15
3,I/O两种编址方式比较统一编址 独立编址指令种类 MOV MOV和 IN/OUT
指令长度 长 短指令执行速度 慢 快存储空间大小 略小 较好相互影响 MEM受 I/O影响 MEM,I/O相互不影响可扩展性 MEM可扩展性差 均较好地址译码时间 较长 较短总线控制复杂性 简单 复杂 (控制信号种类多 )
接口电路复杂性 复杂 简单应用,Z-80系列和 x86系列均采用独立编址方式;
68000系列和 Apple 6502均采用统一编址方式。
16
3,Intel系列微机 I/O编址
Intel系列微处理器 支持 I/O独立编址方式和 I/O统一编址(存储器映象 I/O编址)方式。
I/O统一编址时,I/O地址不能缓存。
Intel系列微机系统 仅支持 I/O独立编址方式。
17
三,PC系列微机 I/O端口访问
1,I/O端口地址空间
I/O端口地址空间,64K个 8位端口空间。
转 27页
I/O端口地址空间划分:
约定不同的接口占有不同的空间;
约定同一接口不同端口是连续的。
I/O端口地址空间实现:
由 A0-A15,IOW/IOR及 IO/M(高电平 )信号组成。
不同接口端口地址不同的实现:
通过门、译码电路等方法实现。
思考,MEM的地址空间及实现如何?
18
2,I/O端口地址寻址方式
I/O端口支持直接寻址和间接寻址方式。
直接寻址时地址仅 8位,间接寻址时可支持 16位。
OUT 60H,AL ;
OUT DX,34H ;
3,I/O端口与 CPU的 REG间 I/O指令种类,IN,OUT。
格式,IN AL,DX
OUT DX,AL
19
4,I/O端口与 MEM间 I/O指令种类,INSB(W,D),OUTSB(W,D)。
参数,用 DX指定 I/O端口地址,I/O时的目的 /源 RAM
地址用 ES,DI(EDI)/DS,SI(ESI)指定。
结果,通过前缀 REP连续传送。
5,I/O端口与存储器端口访问的区别命令类型,IN/OUT与 MOV
寻址方式,直接、间接与多种方式控制信号线,IOW/IOR与 MEMW/MEMR
地址信号线,A0-A15与 A0-A31
20
6,I/O端口访问例题写出向 8255A第 2和第 3个端口写数据的指令,说明接口 CPU侧信号变化过程。
DMA
8255
空闲
00H
20H
40H
1FH
3FH
3FFH



MOV DX,21H
OUT DX,XXH
MOV DX,22H
OUT DX,YYH
思考 1,为何 8255A的地址从 20H开始?
系统设计时约定 8255A的地址从 20H开始。
思考 2,如何实现 8255A的地址从 20H开始?
系统实现:当命令为 IN/OUT、地址为 20H~23H时,
使 8255A的 CS#有效。
转下页
21返回 35页返回上页
T1 T2 T3 T4 T5 T6 T7 T8 T9 T10
A15-A8
AD7-AD0
ALE
IO/M
WD
RD
MOV OUT DX,XXH OUT DX,YYHMOV命令
CLK
CS8255A
CS其他
XXH21H
00H
22H YYH
00H
注意,CS#无效期间,接口与外设间仍在工作。
22
四,Pentium的 I/O保护
I/O保护在保护模式下有效,在实地址模式下无效。
1,I/O特权级 IOPL保护保护通过比较当前任务的特权级 CPL和标志 REG(当前任务的标志 REG副本 )的 IOPL字段实现的。
若 CPL≤IOPL,可执行 IN,OUT,INS,OUTS,CLI、
STI等敏感指令 (对 IOPL敏感 );否则不行。
每个任务都有自己的 IOPL,0级特权的过程可通过
POPF和 IRET指令修改任务的 IOPL。
23
2,I/O允许位映像保护
I/O允许位映像用来修正 IOPL对 I/O敏感指令的影响,
允许低特权的程序访问某些 I/O端口。
I/O允许位映像是一个位向量,每位对应一个端口的操作权限 (0表示允许 )。
操作系统可通过改变任务 TSS中的 I/O允许映像来为某任务分配端口。
思考,如何让普通任务访问 I/O端口?
通过操作系统提供的接口函数;
通过设备驱动程序(其运行在 0级上);
通过操作系统的漏洞。
24
实模式 虚拟 8086模式
I/O指令允许访问 不允许访问
CPL≤IOPL
I/O允许位映象允许保护模式
Y
Y
N
N
几种模式下 I/O保护示意图:
25
第四节 接口分析与设计方法一,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个 )为扩展槽所用。
26
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个 )为扩展槽所用。
返回 35页
27
扩展槽 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 返回 17页
28
用户扩展卡 I/O端口地址选用原则:
系统配置占用的端口地址一律不能用;
厂家声明保留的端口地址不要用;
其余端口地址可用,为避免冲突最好采用 DIP。
3,I/O端口地址分配的实现约定,一个 I/O接口对应多个连续的 I/O端口。
IO/M信号 (高电平 ),AEN信号 (无效 )和 I/O端口地址高位。
I/O接口芯片片选( CS)译码:
I/O接口芯片内部端口译码:
I/O端口地址低位。
29
例 1,并行接口使用 8255A芯片,地址空间 60H-63H。
A1
A0
A9-A2
地址总线
RD
WR
RESET
IO/M
AEN
控制总线
CS
D0-D7数据总线
RD
WR
RESET
A1
A0
8255A
PA0-7
PB0-7
PC0-7
思考,多个接口同时存在时,如何简化译码电路?
返回下页返回 6页
30
数据总线地址总线控制总线
CPU
D7-D0
CS
Ax-A0
WR
RD
设备侧信号
D7-D0
CS
Ax-A0
WR
RD
设备侧信号
8259 8253
MEM
Y0
Y7
A
B
C
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,多个接口的集中译码。
思考,接口与 CPU通讯条件?
转上页 返回 32页 返回 40页
31
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
32
5,I/O指令与接口实现例题执行 CPU指令,MOV DX,42H
OUT DX,8AH
控制总线,IOW有效,IOR无效,MEMR/MEMW无效、
AEN无效。
地址总线,地址期将 42H写入 A9~ A0。
译 码 器,根据 DX高位译码,Y2有效,其他 Yx无效。
接口芯片,8253被选中,其他接口芯片没被选中。
接口内部电路,8253根据 DX低位选择相应的寄存器。
8253,数据期接收数据总线 (D7~ D0)数据 (8AH),写入所选寄存器。
转 30页
33
二,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
工作原理:
将复合的输入信号 (CBA)变为枚举 (分离 )的输出信号。
34
输 入 输 出
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 0
1 0 0 0 0 1 1 1 1 1 1 1 0 1
1 0 0 0 1 0 1 1 1 1 1 0 1 1
1 0 0 0 1 1 1 1 1 1 0 1 1 1
1 0 0 1 0 0 1 1 1 0 1 1 1 1
1 0 0 1 0 1 1 1 0 1 1 1 1 1
1 0 0 1 1 0 1 0 1 1 1 1 1 1
1 0 0 1 1 1 0 1 1 1 1 1 1 1
0 X X X X X 1 1 1 1 1 1 1 1
X 1 X X X X 1 1 1 1 1 1 1 1
X X 1 X X X 1 1 1 1 1 1 1 1
74LS138输入 /输出真值表:
CBA连续时,Y0~ Y7的有效亦为连续的。
35
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
例 1,74LS138在 PC机系统板端口译码的应用转 26页思考 1,为何中断控制 1端口地址为 0020H-003FH?
AEN’=AEN∩IO/M 。
思考 2,指令执行期间,如何保证 CS#有效?
转 21页转 5页
36
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)
例 2,对 74LS138已知入端,计算出端地址
37
例 3,对 74LS138已知出端,设计入端连接。
300H~
330H~
16个
A6,A5,A4
A9,A8高,A7低限制端口数为 4的接法?
限制端口地址为偶地址接法?
每个接口端口数量?
C,B,A对应地址线?
G2B对应地址线?
A3,A2低接 G2B
A0低经门电路接 CS
38
2、可选端口地址的译码应用,扩展槽中接口板的地址译码。
(1)使用比较器 +地址开关方法
74LS688比较器:
当 P0~7≠Q 0~7时,
P=1,输出高电平。
当 P0~7=Q0~7时,
P=0,输出低电平。
地址总线信号和地址开关比较产生一个结果信号。
39
(2)使用异或门 +地址开关方法用异或门代替比较器和地址开关比较。
=1 =1
=1 =1
1 2 3 4 5 6 7
891011121314
VCC
GND
74LS136
74LS136,逻辑:
3=1⊙2 ; 6=4⊙5 ;
8=9⊙10 ; 11=12⊙13 ;
连线:
异或门的输入端分别接地址线和开关线。
结果,各异或门的输出,或,的结果。
思考,用多少片 74LS136可代替一片 74LS688?
注意,门电路与 IOR/IOW信号延迟不能太大。
40
三、与接口电路相关的主板设计问题
1、确定 I/O接口的编址方式及 I/O空间统一 /独立编址,地址信号数量。
延伸,I/O指令,相关控制信号种类。
2、确定并实现各 I/O接口地址空间
I/O空间分配表,译码器选择及级联,各接口的 CS#
连线,可选地址接口译码电路。
3、确定数据、地址总线是否复用地址总线信号锁存及接口芯片地址引脚信号锁存。
转 30页
41
四、接口电路分析与设计基本方法
1、接口硬件设计方法接口主要完成数据、地址、控制总线与外设信号的转换和连接任务。
分析接口两侧的情况:
CPU侧,数据线宽度、地址线宽度、控制线逻辑定义及时序;
外设侧,工作原理与特点,引脚信号逻辑定义、
时序和电平差异。
进行信号转换,找出差异并进行信号转换与改造。
选择合理外围接口芯片构成接口电路。
42
设计注意点:
资源冲突问题;
时序、缓冲、锁存措施;
负载与干扰问题。
2、接口软件设计方法直接对硬件编程:
设计者必须对接口硬件细节(特别是总线接口)
十分熟悉;
尽可能用汇编语言编写程序。
间接对硬件编程:
调用标准接口驱动程序。