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、接口软件设计方法直接对硬件编程:
设计者必须对接口硬件细节(特别是总线接口)
十分熟悉;
尽可能用汇编语言编写程序。
间接对硬件编程:
调用标准接口驱动程序。
第二章 输入输出与接口技术
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、接口软件设计方法直接对硬件编程:
设计者必须对接口硬件细节(特别是总线接口)
十分熟悉;
尽可能用汇编语言编写程序。
间接对硬件编程:
调用标准接口驱动程序。