http://qsyang.yeah.net
现代微机原理与接口技术
1
第 2章 输入输出与接口技术
http://qsyang.yeah.net
现代微机原理与接口技术
2
2.1 接口概述
2.1.1 I/O接口基本概念
1.为什么要引入接口
微机和 I/O设备的信息类型和格式可能不一样。
微机和 I/O设备信号传输处理的速度可能不匹配。
不用接口,I/O直接接 CPU,随着外设增加,会大大降低 CPU的效率。
I/O直接接 CPU,会使外设硬件结构过于依赖 CPU
,对外设本身发展不利。
http://qsyang.yeah.net
现代微机原理与接口技术
3
定义:接口 是 CPU与“外部世界”的 连接电路,负责
,中转,各种 信息 。
2.接口的概念分类,存储器接口和 I/O接口。
位置,介于系统总线与外部设备之间。
http://qsyang.yeah.net
现代微机原理与接口技术
4
3.I/O接口与 I/O设备不同 I/O设备对应 I/O接口不同。
I/O接口受 CPU控制,I/O设备受 I/O接口控制。
为增加通用性,I/O接口电路一般均具有可编程功能。
微机的应用离不开外部设备接口的设计、选用和连接。
CPU 接口 外设数据 数据控制信号 控制信号状态信号 状态信号可能是单向的
http://qsyang.yeah.net
现代微机原理与接口技术
5
2.1.2,I/O接口功能数据缓冲功能,通过寄存器或锁存器实现。
存放数据的寄存器或锁存器称之为 数据口 。
接受和执行 CPU命令功能:
存放 CPU命令代码的寄存器称之为 命令口,
存放执行状态信息的寄存器称之为 状态口 。
设备选择功能,CPU通过地址译码选择不同外设。
即 CPU通过地址译码选择不同 I/O接口和 I/O接口中连接的不同的设备。
信号转换功能,协调总线信号与 I/O设备信号。
转换包括信号的逻辑关系、时序配合和电平转换。
可编程功能,增加接口的灵活性和智能性。
http://qsyang.yeah.net
现代微机原理与接口技术
6
1.1.3,I/O接口组成接口由接口硬件和接口软件组成。
1.接口硬件核心部分
http://qsyang.yeah.net
现代微机原理与接口技术
7
CPU侧引脚信号:
外设侧引脚信号:
数据信号,接口缓冲寄存器与外设间的数据交换;
状态信号,外设工作状态送给接口的状态寄存器;
控制信号,接口的内部控制逻辑控制外设工作的控制信号和同步信号。
地址信号,选择 I/O接口中的不同寄存器;
数据信号,命令或数据写入到相应寄存器,或者从相关寄存器读出数据或状态;
控制信号,控制命令的执行、时序、信号同步和片选;
状态信号,接口的部分工作状态信号。
内部控制逻辑:
根据控制寄存器、状态寄存器、总线控制信号及外设状态信号控制 I/O接口的工作。
http://qsyang.yeah.net
现代微机原理与接口技术
8
常见接口插槽
PS2鼠标
PS2键盘千兆网
10/100M网卡
USB
并行口 MIDI/游戏接口显示器接口1394 1394a
麦克风 /音箱
/线入接口串行口
http://qsyang.yeah.net
现代微机原理与接口技术
9
2.接口软件(设备驱动程序)
初始化程序段,设置接口工作方式及初始条件。
传送方式处理程序段,CPU针对不同的 I/O设备有不同的处理方式。如设置中断向量等。
主控程序段,完成接口任务的程序。
程序终止与退出程序段,对接口电路硬件保护及操作系统中数据恢复。
辅助程序段,提供人 -机对话手段。
http://qsyang.yeah.net
现代微机原理与接口技术
10
2.2 数据传输控制方式
2.2.1 程序控制方式
1,无条件传送方式特点,I时假设外设已准备好,O时假设外设空闲。
要求,接口 I时加缓冲器,O时加锁存器。
应用,对简单外设的操作。
2.条件传送方式(查询方式)
工作原理,CPU查询外设已准备好后,才传送数据。
特点,CPU与外设间自然同步。
要求,需要增加表示外部设备状态的简单硬件电路。
应用,适用在 CPU不太忙且传送速度要求不高时。
http://qsyang.yeah.net
现代微机原理与接口技术
11
3.中断传送方式特点,CPU与外设可同时工作。
要求,接口中需要中断控制逻辑支持。
应用,适用与非高速度大量数据传送时。
2.2.2 直接存储器存取 (DMA)方式特点,数据的传送不经过 CPU而由 DMA负责,但 I/O
设备管理由 CPU控制,简化 CPU对 I/O的控制。
要求,需要 DMA控制器及相关逻辑支持。
应用,适用与高速度大量数据传送时。
http://qsyang.yeah.net
现代微机原理与接口技术
12
2.2.3 I/O处理机方式特点,I/O处理机接管了 CPU的各种 I/O操作及 I/O控制功能,CPU能与 IO处理机并行工作。 I/O
处理机有自己的指令系统,能独立地直接存取主存储器、对外设和 I/O过程进行管理。
要求,需要 IO处理机支持。
应用,高速 I/O归 IO处理机管理,低速 I/O设备归 CPU
管理。
http://qsyang.yeah.net
现代微机原理与接口技术
13
2.3 I/O编址与访问
2.3.1 I/O端口
1.I/O端口
I/O端口 是供 CPU直接存取访问的接口中的寄存器或电路。
接口中的命令口、状态口和数据口均为 I/O端口。
2.I/O端口地址是对接口中的不同寄存器或电路的编号,该编号加上该接口的基地址称为该端口的 I/O端口地址 。
CPU通过向命令端口发命令来对接口,最终对设备进行控制。访问设备实际上是访问相关的端口。
3.命令、接口与 I/O端口关系一个接口中有多个 I/O端口;
一个 I/O端口可接受多种命令,对应多个寄存器。
http://qsyang.yeah.net
现代微机原理与接口技术
14
2.3.2 I/O端口编址
1.I/O统一编址(存储器映象 I/O编址)
一个 I/O端口等同于一个存储器单元。存储单元和 I/O端口统一编址。
优点:
对 I/O端口的访问命令与对存储器单元访问相同,
不必使用专用 I/O指令;
外设数目或 I/O寄存器数几乎不受限制。
系统读写控制逻辑较简单。
缺点:
I/O端口占用部分 MEM空间,可用 MEM空间减小;
对 MEM访问指令较长,执行速度较慢;
I/O端口地址译码时间较长。
MEM空间
I/O空间
N-1
K
K-1
0
存储类指令应用,Motorola系列和 Apple 系列均采用此方式
http://qsyang.yeah.net
现代微机原理与接口技术
15
2.I/O独立编址
I/O端口地址空间与存储器地址空间相互独立。
应用,Z-80系列和 x86系列均采用此方式。
优点:
MEM地址空间不受 I/O端口地址空间影响;
I/O端口数量不多,占用地址线少,地址译码简单,速度较快,使得此类指令执行速度快;
使用专用 I/O命令 (IN/OUT),与 MEM访问命令
(LOAD/STORE,MOV)有明显区别,便于理解和检查。
MEM I/O设备
N-1
0
存储类指令 I/O类指令
K-1
0
http://qsyang.yeah.net
现代微机原理与接口技术
16
缺点:
3.Intel系列微机 I/O编址
Intel系列微处理器 支持 I/O独立编址方式和 I/O统一编址(存储器映象编址)方式。
Intel系列微机系统 仅支持 I/O独立编址方式。
专用 I/O指令增加指令系统复杂性,且 I/O指令类型少,寻址方式也少,程序设计灵活性较差;
要求处理器提供 MEMR/MEMW和 IOR/IOW两组控制信号,增加了控制逻辑的复杂性。
http://qsyang.yeah.net
现代微机原理与接口技术
17
2.3.3 PC系列 I/O端口访问
2.I/O端口地址寻址方式
I/O端口支持直接寻址和间接寻址方式。
直接寻址 是使用一字节立即数寻址,端口寻址范围为
00H~FFH共 256个。
间接寻址 是使用 DX寄存器间接给出 I/O端口地址,可寻址的范围是 0000H~FFFFH共 64K个端口。
1.I/O端口地址空间
I/O端口地址空间,理论上有 64K个独立编址的 8位端口空间。两个连续 8位端口可作为 16位端口,4个连续的 8位端口可作为 32位端口处理。注意端口地址对齐。
I/O端口地址信号,借用 地址线信号 和 IOW/IOR信号线 以及 表示 DMA正在工作的 AEN的反相信号 组成。
http://qsyang.yeah.net
现代微机原理与接口技术
18
4.I/O端口与存储器间 I/O指令 —— 块 I/O指令格式,INSB/W/D,OUTSB/W/D。
参数,用 DX指定 I/O端口地址,输入 /输出时的目的 /
源 RAM地址用 ES:DI(EDI)/DS:SI(ESI)指定。 EFLAG
寄存器中 DF位来决定地址加和减。
结果,通过前缀 REP在 I/O端口和连续的存储器空间之间传送数据 。
3.I/O端口与累加器间 I/O指令 —— 寄存器 I/O指令格式,IN,OUT。
结果,完成 I/O端口和 EAX,AX,AL之间的数据传送,可使用直接寻址和间接寻址方式。
举例,mov dx,3fdh mov al,36h
in al,dx out 43h,al
http://qsyang.yeah.net
现代微机原理与接口技术
19
或
A19~A16
/S6~S3
CS8254
0H
00H
43H [AL]
OUT 43H,AL
WR ( IOW )
IO/M
http://qsyang.yeah.net
现代微机原理与接口技术
20
2.3.4 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。
http://qsyang.yeah.net
现代微机原理与接口技术
21
2.I/O允许位映象保护
I/O允许位映象用来修正 IOPL对 I/O敏感指令的影响,
允许低特权的程序访问某些 I/O端口。
I/O允许位映象是一个位向量,每位对应一个端口的操作权限 (0表示允许 )。
操作系统可通过改变任务 TSS中的 I/O允许映象来为某任务分配端口。(一定是在 0级)
思考,如何让普通任务访问 I/O端口?
通过操作系统提供的接口函数;
通过设备驱动程序(其运行在 0级上);
通过操作系统的漏洞。
思路,设法进入到 0级保护模式和 V86模式 I/O访问流程
http://qsyang.yeah.net
现代微机原理与接口技术
22
2.4 接口分析与设计方法
2.4.1 x86系列微机接口分析
1.I/O接口硬件分类系统板上 I/O芯片和 I/O扩展槽接口卡。
2.I/O端口地址分配
PC系列 I/O地址线有 16根,对应 64K空间;
I/O端口译码只使用了 A0-A9,共 1024个端口,地址范围为 0000H~03FFH。
不同的微机系统对 I/O端口地址的分配不同。
初期,A9=0端口 (512个 )为系统板所用,其他端口
(512个 )为扩展槽所用。
http://qsyang.yeah.net
现代微机原理与接口技术
23
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个 )为扩展槽所用。
返回 30页
http://qsyang.yeah.net
现代微机原理与接口技术
24
扩展槽 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
http://qsyang.yeah.net
现代微机原理与接口技术
25
用户 I/O端口地址选用原则:
系统配置占用的端口地址一律不能用;
厂家声明保留的端口地址不要用;
其余端口地址可用,为避免冲突最好采用 DIP。
3.I/O端口地址译码方法一个 I/O接口中的多个端口地址是连续的。
IOW/IOR信号 (有效 ),AEN信号 (无效 )和 I/O端口地址高位经过译码得到。
I/O接口芯片内部端口地址:
I/O端口地址低位直接组成。
I/O接口芯片片选 (CS)信号:
http://qsyang.yeah.net
现代微机原理与接口技术
26
4.I/O端口访问
CPU通过 I/O指令对 I/O接口进行访问。
汇编语言指令,IN,OUT。
C语言指令,inportb(inport),outportb(outport)。
VC++指令,_inp(_inpw),_outp(_outpw)。
http://qsyang.yeah.net
现代微机原理与接口技术
27
例,读取 CMOS信息。
main()
{
short int i,j;
unsigned char c_CmosMessage[64];
for (i=0;i<=63;i++)
{
j=i|0x80
outportb(0x70,j);
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
http://qsyang.yeah.net
现代微机原理与接口技术
28
2.4.2 I/O端口地址译码电路的几种形式
1.固定式端口地址译码接口中只有一个端口时可采用门电路构成。
接口中有多个端口时一般采用译码器电路构成,常见的译码器有 74LS138,74LS154等。
74LS138译码器:
工作条件:
G1=1,G2A=G2B=0。
工作原理:
将复合的输入信号变为枚举的输出信号。
15Y
0
Y7
A
B
C
G2B
G2A
G1
14
13
12
11
10
9
7
1
2
3
4
5
6
74LS138
http://qsyang.yeah.net
现代微机原理与接口技术
29
输 入 输 出
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真值表
http://qsyang.yeah.net
现代微机原理与接口技术
30
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机系统板端口译码的应用:
转 23页为何中断控制 1端口地址为 0020H-003FH?
软件上和信号上如何区别访问 I/O还是 MEMORY?
http://qsyang.yeah.net
现代微机原理与接口技术
31
DMA
8259
8253
8255
系统 …
空闲
00H
20H
40H
60H
3FFH
1FH
3FH
5FH
7FH
:
:
:
:
数据总线地址总线控制总线
CPU
D7-D0
CS
A0
WR
RD
设备侧信号
D7-D0
CS
A1
A0
WR
RD
设备侧信号8259
8253
MEM
Y0
Y7
A
B
C
G2B
G2A
G1
15
14
13
12
11
10
9
7
A5
A6
A7
A9
A8
AEN
74LS138
A1
A0
A0
A15-A0
D7-D0
http://qsyang.yeah.net
现代微机原理与接口技术
32
2.可选式端口地址译码
(1)使用比较器 +地址开关方法
74LS688比较器:
当 P0~7≠Q0~7时,
P=1,输出高电平。
当 P0~7=Q0~7时,
P=0,输出低电平。
比较器和地址开关产生一个信号参与片选。
注意,门电路与 IOR/IOW信号延迟不能太大。
http://qsyang.yeah.net
现代微机原理与接口技术
33
(2)使用异或门 +地址开关方法用异或门代替比较器和地址开关比较。
=1 =1
=1 =1
1 2 3 4 5 6 7
891011121314
VCC
GND
74LS136
如用 3片 74LS136代替 74LS688。
74LS136:
逻辑:
3=1⊙2 ; 6=4⊙5 ;
8=9⊙10 ; 11=12⊙13 ;
连线:
异或门的输入端分别接地址线和开关线。
片选,各异或门的输出,或,的结果。
http://qsyang.yeah.net
现代微机原理与接口技术
34
2.4.3 接口分析与设计基本方法
1.接口硬件设计方法接口主要完成数据、地址、控制总线与外设信号的转换和连接任务。
分析接口两侧的情况:
CPU侧,数据线宽度、地址线宽度、控制线逻辑定义及时序;
外设侧,工作原理与特点,引脚信号逻辑定义、时序和电平差异。
进行信号转换,找出差异并进行信号转换与改造。
选择合理外围接口芯片构成接口电路。
http://qsyang.yeah.net
现代微机原理与接口技术
35
注意点:
资源冲突问题;
时序问题及缓冲、锁存措施;
负载与总线驱动问题。
抗干扰措施。
与数据总线相连的器件必须有三态功能。
接口卡插脚与 I/O槽引角对应关系要正确。
接口卡的几何尺寸要正确。
http://qsyang.yeah.net
现代微机原理与接口技术
36
2.接口软件设计方法直接对硬件编程:
设计者必须对接口硬件细节十分熟悉;
尽可能用汇编语言编写程序。
间接对硬件编程:
调用标准接口驱动程序。
BIOS调用,DOS调用,Win32 API、
DirectX等
http://qsyang.yeah.net
现代微机原理与接口技术
37
思考题 1
http://qsyang.yeah.net
现代微机原理与接口技术
38
300H
301H
302H
303H
304H
305H
306H
307H
思考题 1 的答案
http://qsyang.yeah.net
现代微机原理与接口技术
39
思考题 2
Y0
Y7
A
B
C
G2B
G2A
G1
15
14
13
12
11
10
9
7
1
2
3
4
5
6
74LS138
__
__
__
__
__
AEN’
00~1FH
40~5FH
80~9FH
_________
100~11FH
_________
_________
_________
A9~A0共 10根线参与地址译码,请将上图的空填对。
http://qsyang.yeah.net
现代微机原理与接口技术
40
思考题 2的答案
A6
A7
A8
A5
A9
Y0
Y7
A
B
C
G2B
G2A
G1
15
14
13
12
11
10
9
7
1
2
3
4
5
6
74LS138
AEN’
00~1FH
40~5FH
80~9FH
100~11FH
C0~DFH
140~15HH
180~19FH
1C0~1DFH
A9A8A7A6A5A4A3A2A1A0
第一步 ×× ×××
第二步 0 0 ×× ×××
第三步 0 C B A 0 × × ×××
http://qsyang.yeah.net
现代微机原理与接口技术
41
思考题 3
按图上的连接方法,写出译码输出端 Y1对应的地址。
Y1
A
B
C
74LS138
A13
A14
A15
G1≥1A16A17
G2AA19
G2B&IORIOW
http://qsyang.yeah.net
现代微机原理与接口技术
42
思考题 3答案
Y1
A
B
C
74LS138
A13
A14
A15
G1≥1A16A17
G2AA19
G2B&IORIOW
A19A18A17A16A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0
0 × 0 1 0 0 1 × × × × ××× ××× ×× ×
1 0
1 1
12000H~13FFFH
52000H~53FFFH
22000H~23FFFH
62000H~63FFFH
32000H~33FFFH
72000H~73FFFH
http://qsyang.yeah.net
现代微机原理与接口技术
43
思考题 4
Y2
A
B
C
74LS138
A3
A4
A5
G1&A6A7
G2B&IORIOW
某接口片
CS
A0
A1
A0
A1
G2AA8
A9 ≥1
按图上的连接方法,该接口芯片一共有几个端口?每个端口的地址分别是多少?
http://qsyang.yeah.net
现代微机原理与接口技术
44
思考题 4答案
Y2
A
B
C
74LS138
A3
A4
A5
G1&A6A7
G2B&IORIOW
某接口片
CS
A0
A1
A0
A1
G2AA8
A9 ≥1
A9A8A7A6A5A4A3A2A1A0
0 0 1 1 0 1 0 × 0 0
0 1
1 0
1 1
D0H D4H
D1H 或 D5H
D2H D6H
D3H D7H
共 4个端口地址是:
现代微机原理与接口技术
1
第 2章 输入输出与接口技术
http://qsyang.yeah.net
现代微机原理与接口技术
2
2.1 接口概述
2.1.1 I/O接口基本概念
1.为什么要引入接口
微机和 I/O设备的信息类型和格式可能不一样。
微机和 I/O设备信号传输处理的速度可能不匹配。
不用接口,I/O直接接 CPU,随着外设增加,会大大降低 CPU的效率。
I/O直接接 CPU,会使外设硬件结构过于依赖 CPU
,对外设本身发展不利。
http://qsyang.yeah.net
现代微机原理与接口技术
3
定义:接口 是 CPU与“外部世界”的 连接电路,负责
,中转,各种 信息 。
2.接口的概念分类,存储器接口和 I/O接口。
位置,介于系统总线与外部设备之间。
http://qsyang.yeah.net
现代微机原理与接口技术
4
3.I/O接口与 I/O设备不同 I/O设备对应 I/O接口不同。
I/O接口受 CPU控制,I/O设备受 I/O接口控制。
为增加通用性,I/O接口电路一般均具有可编程功能。
微机的应用离不开外部设备接口的设计、选用和连接。
CPU 接口 外设数据 数据控制信号 控制信号状态信号 状态信号可能是单向的
http://qsyang.yeah.net
现代微机原理与接口技术
5
2.1.2,I/O接口功能数据缓冲功能,通过寄存器或锁存器实现。
存放数据的寄存器或锁存器称之为 数据口 。
接受和执行 CPU命令功能:
存放 CPU命令代码的寄存器称之为 命令口,
存放执行状态信息的寄存器称之为 状态口 。
设备选择功能,CPU通过地址译码选择不同外设。
即 CPU通过地址译码选择不同 I/O接口和 I/O接口中连接的不同的设备。
信号转换功能,协调总线信号与 I/O设备信号。
转换包括信号的逻辑关系、时序配合和电平转换。
可编程功能,增加接口的灵活性和智能性。
http://qsyang.yeah.net
现代微机原理与接口技术
6
1.1.3,I/O接口组成接口由接口硬件和接口软件组成。
1.接口硬件核心部分
http://qsyang.yeah.net
现代微机原理与接口技术
7
CPU侧引脚信号:
外设侧引脚信号:
数据信号,接口缓冲寄存器与外设间的数据交换;
状态信号,外设工作状态送给接口的状态寄存器;
控制信号,接口的内部控制逻辑控制外设工作的控制信号和同步信号。
地址信号,选择 I/O接口中的不同寄存器;
数据信号,命令或数据写入到相应寄存器,或者从相关寄存器读出数据或状态;
控制信号,控制命令的执行、时序、信号同步和片选;
状态信号,接口的部分工作状态信号。
内部控制逻辑:
根据控制寄存器、状态寄存器、总线控制信号及外设状态信号控制 I/O接口的工作。
http://qsyang.yeah.net
现代微机原理与接口技术
8
常见接口插槽
PS2鼠标
PS2键盘千兆网
10/100M网卡
USB
并行口 MIDI/游戏接口显示器接口1394 1394a
麦克风 /音箱
/线入接口串行口
http://qsyang.yeah.net
现代微机原理与接口技术
9
2.接口软件(设备驱动程序)
初始化程序段,设置接口工作方式及初始条件。
传送方式处理程序段,CPU针对不同的 I/O设备有不同的处理方式。如设置中断向量等。
主控程序段,完成接口任务的程序。
程序终止与退出程序段,对接口电路硬件保护及操作系统中数据恢复。
辅助程序段,提供人 -机对话手段。
http://qsyang.yeah.net
现代微机原理与接口技术
10
2.2 数据传输控制方式
2.2.1 程序控制方式
1,无条件传送方式特点,I时假设外设已准备好,O时假设外设空闲。
要求,接口 I时加缓冲器,O时加锁存器。
应用,对简单外设的操作。
2.条件传送方式(查询方式)
工作原理,CPU查询外设已准备好后,才传送数据。
特点,CPU与外设间自然同步。
要求,需要增加表示外部设备状态的简单硬件电路。
应用,适用在 CPU不太忙且传送速度要求不高时。
http://qsyang.yeah.net
现代微机原理与接口技术
11
3.中断传送方式特点,CPU与外设可同时工作。
要求,接口中需要中断控制逻辑支持。
应用,适用与非高速度大量数据传送时。
2.2.2 直接存储器存取 (DMA)方式特点,数据的传送不经过 CPU而由 DMA负责,但 I/O
设备管理由 CPU控制,简化 CPU对 I/O的控制。
要求,需要 DMA控制器及相关逻辑支持。
应用,适用与高速度大量数据传送时。
http://qsyang.yeah.net
现代微机原理与接口技术
12
2.2.3 I/O处理机方式特点,I/O处理机接管了 CPU的各种 I/O操作及 I/O控制功能,CPU能与 IO处理机并行工作。 I/O
处理机有自己的指令系统,能独立地直接存取主存储器、对外设和 I/O过程进行管理。
要求,需要 IO处理机支持。
应用,高速 I/O归 IO处理机管理,低速 I/O设备归 CPU
管理。
http://qsyang.yeah.net
现代微机原理与接口技术
13
2.3 I/O编址与访问
2.3.1 I/O端口
1.I/O端口
I/O端口 是供 CPU直接存取访问的接口中的寄存器或电路。
接口中的命令口、状态口和数据口均为 I/O端口。
2.I/O端口地址是对接口中的不同寄存器或电路的编号,该编号加上该接口的基地址称为该端口的 I/O端口地址 。
CPU通过向命令端口发命令来对接口,最终对设备进行控制。访问设备实际上是访问相关的端口。
3.命令、接口与 I/O端口关系一个接口中有多个 I/O端口;
一个 I/O端口可接受多种命令,对应多个寄存器。
http://qsyang.yeah.net
现代微机原理与接口技术
14
2.3.2 I/O端口编址
1.I/O统一编址(存储器映象 I/O编址)
一个 I/O端口等同于一个存储器单元。存储单元和 I/O端口统一编址。
优点:
对 I/O端口的访问命令与对存储器单元访问相同,
不必使用专用 I/O指令;
外设数目或 I/O寄存器数几乎不受限制。
系统读写控制逻辑较简单。
缺点:
I/O端口占用部分 MEM空间,可用 MEM空间减小;
对 MEM访问指令较长,执行速度较慢;
I/O端口地址译码时间较长。
MEM空间
I/O空间
N-1
K
K-1
0
存储类指令应用,Motorola系列和 Apple 系列均采用此方式
http://qsyang.yeah.net
现代微机原理与接口技术
15
2.I/O独立编址
I/O端口地址空间与存储器地址空间相互独立。
应用,Z-80系列和 x86系列均采用此方式。
优点:
MEM地址空间不受 I/O端口地址空间影响;
I/O端口数量不多,占用地址线少,地址译码简单,速度较快,使得此类指令执行速度快;
使用专用 I/O命令 (IN/OUT),与 MEM访问命令
(LOAD/STORE,MOV)有明显区别,便于理解和检查。
MEM I/O设备
N-1
0
存储类指令 I/O类指令
K-1
0
http://qsyang.yeah.net
现代微机原理与接口技术
16
缺点:
3.Intel系列微机 I/O编址
Intel系列微处理器 支持 I/O独立编址方式和 I/O统一编址(存储器映象编址)方式。
Intel系列微机系统 仅支持 I/O独立编址方式。
专用 I/O指令增加指令系统复杂性,且 I/O指令类型少,寻址方式也少,程序设计灵活性较差;
要求处理器提供 MEMR/MEMW和 IOR/IOW两组控制信号,增加了控制逻辑的复杂性。
http://qsyang.yeah.net
现代微机原理与接口技术
17
2.3.3 PC系列 I/O端口访问
2.I/O端口地址寻址方式
I/O端口支持直接寻址和间接寻址方式。
直接寻址 是使用一字节立即数寻址,端口寻址范围为
00H~FFH共 256个。
间接寻址 是使用 DX寄存器间接给出 I/O端口地址,可寻址的范围是 0000H~FFFFH共 64K个端口。
1.I/O端口地址空间
I/O端口地址空间,理论上有 64K个独立编址的 8位端口空间。两个连续 8位端口可作为 16位端口,4个连续的 8位端口可作为 32位端口处理。注意端口地址对齐。
I/O端口地址信号,借用 地址线信号 和 IOW/IOR信号线 以及 表示 DMA正在工作的 AEN的反相信号 组成。
http://qsyang.yeah.net
现代微机原理与接口技术
18
4.I/O端口与存储器间 I/O指令 —— 块 I/O指令格式,INSB/W/D,OUTSB/W/D。
参数,用 DX指定 I/O端口地址,输入 /输出时的目的 /
源 RAM地址用 ES:DI(EDI)/DS:SI(ESI)指定。 EFLAG
寄存器中 DF位来决定地址加和减。
结果,通过前缀 REP在 I/O端口和连续的存储器空间之间传送数据 。
3.I/O端口与累加器间 I/O指令 —— 寄存器 I/O指令格式,IN,OUT。
结果,完成 I/O端口和 EAX,AX,AL之间的数据传送,可使用直接寻址和间接寻址方式。
举例,mov dx,3fdh mov al,36h
in al,dx out 43h,al
http://qsyang.yeah.net
现代微机原理与接口技术
19
或
A19~A16
/S6~S3
CS8254
0H
00H
43H [AL]
OUT 43H,AL
WR ( IOW )
IO/M
http://qsyang.yeah.net
现代微机原理与接口技术
20
2.3.4 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。
http://qsyang.yeah.net
现代微机原理与接口技术
21
2.I/O允许位映象保护
I/O允许位映象用来修正 IOPL对 I/O敏感指令的影响,
允许低特权的程序访问某些 I/O端口。
I/O允许位映象是一个位向量,每位对应一个端口的操作权限 (0表示允许 )。
操作系统可通过改变任务 TSS中的 I/O允许映象来为某任务分配端口。(一定是在 0级)
思考,如何让普通任务访问 I/O端口?
通过操作系统提供的接口函数;
通过设备驱动程序(其运行在 0级上);
通过操作系统的漏洞。
思路,设法进入到 0级保护模式和 V86模式 I/O访问流程
http://qsyang.yeah.net
现代微机原理与接口技术
22
2.4 接口分析与设计方法
2.4.1 x86系列微机接口分析
1.I/O接口硬件分类系统板上 I/O芯片和 I/O扩展槽接口卡。
2.I/O端口地址分配
PC系列 I/O地址线有 16根,对应 64K空间;
I/O端口译码只使用了 A0-A9,共 1024个端口,地址范围为 0000H~03FFH。
不同的微机系统对 I/O端口地址的分配不同。
初期,A9=0端口 (512个 )为系统板所用,其他端口
(512个 )为扩展槽所用。
http://qsyang.yeah.net
现代微机原理与接口技术
23
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个 )为扩展槽所用。
返回 30页
http://qsyang.yeah.net
现代微机原理与接口技术
24
扩展槽 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
http://qsyang.yeah.net
现代微机原理与接口技术
25
用户 I/O端口地址选用原则:
系统配置占用的端口地址一律不能用;
厂家声明保留的端口地址不要用;
其余端口地址可用,为避免冲突最好采用 DIP。
3.I/O端口地址译码方法一个 I/O接口中的多个端口地址是连续的。
IOW/IOR信号 (有效 ),AEN信号 (无效 )和 I/O端口地址高位经过译码得到。
I/O接口芯片内部端口地址:
I/O端口地址低位直接组成。
I/O接口芯片片选 (CS)信号:
http://qsyang.yeah.net
现代微机原理与接口技术
26
4.I/O端口访问
CPU通过 I/O指令对 I/O接口进行访问。
汇编语言指令,IN,OUT。
C语言指令,inportb(inport),outportb(outport)。
VC++指令,_inp(_inpw),_outp(_outpw)。
http://qsyang.yeah.net
现代微机原理与接口技术
27
例,读取 CMOS信息。
main()
{
short int i,j;
unsigned char c_CmosMessage[64];
for (i=0;i<=63;i++)
{
j=i|0x80
outportb(0x70,j);
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
http://qsyang.yeah.net
现代微机原理与接口技术
28
2.4.2 I/O端口地址译码电路的几种形式
1.固定式端口地址译码接口中只有一个端口时可采用门电路构成。
接口中有多个端口时一般采用译码器电路构成,常见的译码器有 74LS138,74LS154等。
74LS138译码器:
工作条件:
G1=1,G2A=G2B=0。
工作原理:
将复合的输入信号变为枚举的输出信号。
15Y
0
Y7
A
B
C
G2B
G2A
G1
14
13
12
11
10
9
7
1
2
3
4
5
6
74LS138
http://qsyang.yeah.net
现代微机原理与接口技术
29
输 入 输 出
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真值表
http://qsyang.yeah.net
现代微机原理与接口技术
30
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机系统板端口译码的应用:
转 23页为何中断控制 1端口地址为 0020H-003FH?
软件上和信号上如何区别访问 I/O还是 MEMORY?
http://qsyang.yeah.net
现代微机原理与接口技术
31
DMA
8259
8253
8255
系统 …
空闲
00H
20H
40H
60H
3FFH
1FH
3FH
5FH
7FH
:
:
:
:
数据总线地址总线控制总线
CPU
D7-D0
CS
A0
WR
RD
设备侧信号
D7-D0
CS
A1
A0
WR
RD
设备侧信号8259
8253
MEM
Y0
Y7
A
B
C
G2B
G2A
G1
15
14
13
12
11
10
9
7
A5
A6
A7
A9
A8
AEN
74LS138
A1
A0
A0
A15-A0
D7-D0
http://qsyang.yeah.net
现代微机原理与接口技术
32
2.可选式端口地址译码
(1)使用比较器 +地址开关方法
74LS688比较器:
当 P0~7≠Q0~7时,
P=1,输出高电平。
当 P0~7=Q0~7时,
P=0,输出低电平。
比较器和地址开关产生一个信号参与片选。
注意,门电路与 IOR/IOW信号延迟不能太大。
http://qsyang.yeah.net
现代微机原理与接口技术
33
(2)使用异或门 +地址开关方法用异或门代替比较器和地址开关比较。
=1 =1
=1 =1
1 2 3 4 5 6 7
891011121314
VCC
GND
74LS136
如用 3片 74LS136代替 74LS688。
74LS136:
逻辑:
3=1⊙2 ; 6=4⊙5 ;
8=9⊙10 ; 11=12⊙13 ;
连线:
异或门的输入端分别接地址线和开关线。
片选,各异或门的输出,或,的结果。
http://qsyang.yeah.net
现代微机原理与接口技术
34
2.4.3 接口分析与设计基本方法
1.接口硬件设计方法接口主要完成数据、地址、控制总线与外设信号的转换和连接任务。
分析接口两侧的情况:
CPU侧,数据线宽度、地址线宽度、控制线逻辑定义及时序;
外设侧,工作原理与特点,引脚信号逻辑定义、时序和电平差异。
进行信号转换,找出差异并进行信号转换与改造。
选择合理外围接口芯片构成接口电路。
http://qsyang.yeah.net
现代微机原理与接口技术
35
注意点:
资源冲突问题;
时序问题及缓冲、锁存措施;
负载与总线驱动问题。
抗干扰措施。
与数据总线相连的器件必须有三态功能。
接口卡插脚与 I/O槽引角对应关系要正确。
接口卡的几何尺寸要正确。
http://qsyang.yeah.net
现代微机原理与接口技术
36
2.接口软件设计方法直接对硬件编程:
设计者必须对接口硬件细节十分熟悉;
尽可能用汇编语言编写程序。
间接对硬件编程:
调用标准接口驱动程序。
BIOS调用,DOS调用,Win32 API、
DirectX等
http://qsyang.yeah.net
现代微机原理与接口技术
37
思考题 1
http://qsyang.yeah.net
现代微机原理与接口技术
38
300H
301H
302H
303H
304H
305H
306H
307H
思考题 1 的答案
http://qsyang.yeah.net
现代微机原理与接口技术
39
思考题 2
Y0
Y7
A
B
C
G2B
G2A
G1
15
14
13
12
11
10
9
7
1
2
3
4
5
6
74LS138
__
__
__
__
__
AEN’
00~1FH
40~5FH
80~9FH
_________
100~11FH
_________
_________
_________
A9~A0共 10根线参与地址译码,请将上图的空填对。
http://qsyang.yeah.net
现代微机原理与接口技术
40
思考题 2的答案
A6
A7
A8
A5
A9
Y0
Y7
A
B
C
G2B
G2A
G1
15
14
13
12
11
10
9
7
1
2
3
4
5
6
74LS138
AEN’
00~1FH
40~5FH
80~9FH
100~11FH
C0~DFH
140~15HH
180~19FH
1C0~1DFH
A9A8A7A6A5A4A3A2A1A0
第一步 ×× ×××
第二步 0 0 ×× ×××
第三步 0 C B A 0 × × ×××
http://qsyang.yeah.net
现代微机原理与接口技术
41
思考题 3
按图上的连接方法,写出译码输出端 Y1对应的地址。
Y1
A
B
C
74LS138
A13
A14
A15
G1≥1A16A17
G2AA19
G2B&IORIOW
http://qsyang.yeah.net
现代微机原理与接口技术
42
思考题 3答案
Y1
A
B
C
74LS138
A13
A14
A15
G1≥1A16A17
G2AA19
G2B&IORIOW
A19A18A17A16A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0
0 × 0 1 0 0 1 × × × × ××× ××× ×× ×
1 0
1 1
12000H~13FFFH
52000H~53FFFH
22000H~23FFFH
62000H~63FFFH
32000H~33FFFH
72000H~73FFFH
http://qsyang.yeah.net
现代微机原理与接口技术
43
思考题 4
Y2
A
B
C
74LS138
A3
A4
A5
G1&A6A7
G2B&IORIOW
某接口片
CS
A0
A1
A0
A1
G2AA8
A9 ≥1
按图上的连接方法,该接口芯片一共有几个端口?每个端口的地址分别是多少?
http://qsyang.yeah.net
现代微机原理与接口技术
44
思考题 4答案
Y2
A
B
C
74LS138
A3
A4
A5
G1&A6A7
G2B&IORIOW
某接口片
CS
A0
A1
A0
A1
G2AA8
A9 ≥1
A9A8A7A6A5A4A3A2A1A0
0 0 1 1 0 1 0 × 0 0
0 1
1 0
1 1
D0H D4H
D1H 或 D5H
D2H D6H
D3H D7H
共 4个端口地址是: