可编程并行输入/输出接口8255A 的结构
7 a$ @5 I* f5 _- K2 ], D* A Intel 8255A是一种可编程并行输入/输出接口。所谓并行,是指数据的各位同时传送。
, V8 l! f2 e; S* K; d' W: X v% M' @
8255A只支持字节数据的并行传送。
9 n+ m- U3 g6 T8255A为40引脚、双列直插封装。其引脚排列及内部结构示意图如图6.1所示。
; O$ A8 M# `8 U' a0 n由图可看出,它由数据端口、组控制电路、数据总线缓冲器、读/写控制逻辑等组成。
, l. e. Z* K+ \; W1 c. I
1.数据端口
# Q; j. q- T* U3 b' ~+ ^
8255A有3个8位数据端口:端口A、端口B和端口c,分别简称为A口、B口和C口。它们对外的引线分别是PA7~PA0、PB7~PB0和PC7~PC0。每一个端口都可由程序设定为输入或输出。c口可分成两个4位的端口:c高4位口(Pc7~PC4)和c低4位口(PC3~PC0)。
+ D1 u, e: P" R
3 I$ I/ Y5 X& p8 h3 l
: u2 @" ?. E, i- ^" J; O
3 I3 S4 \0 J% U( L* ^9 O
" p0 v; q2 e7 t0 t3 D5 e: a& R
" Q1 F7 l& f g$ Z2.A组、B组控制电路
- M' L1 ]2 ]! v7 g# d9 h# z8 ?在8255A内部,3个端口分成两组来管理。A口及c高4位口为A组,B口及c低4位
& m2 y0 U/ e8 x: N' W9 J0 f; {
口为B组。两组分别设有控制电路,控制电路根据“控制字”进行相应的控制。
6 B! }/ B. V2 v/ i7 S
3.数据总线缓冲器
( L4 l* `; Y; k) v$ a' |: n0 I R 这是一个8位三态双向缓冲器,作为8255A与系统总线的接口。对于和系统数据总线直接相连的接口芯片来说,一般都应具有三态缓冲器,以保证在芯片未被选中时和系统总线处于“脱开”状态。数据总线缓冲器还有抑制噪音、增强驱动能力的功能。
6 g% s( b4 r1 h0 q! T4 m$ e; W& ^
4.读/写控制逻辑
* s' c9 D( \1 i5 d
该电路根据CPU读、写等有关信号对8255A内部进行读、写控制,用于管理所有的数据、控制字和状态字的传送。对8255A进行控制的信号有:
& s+ R" X9 H: S CS(上划线)——片选信号,低电平有效。为低时,8255A被选中。
/ ]( z% ]( m+ Q6 Q# e5 o, E+ k RD(上划线)——读信号,低电平有效。该信号为低且CS(上划线)有效时,8255A送指定端口的数据或状态至CPU。
2 G2 v0 M9 w: ] WR(上划线)——写信号,低电平有效。该信号为低且CS(上划线)有效时,将数据总线上的数据写到指定的数据端口或控制字寄存器。
* G- N8 x; `7 ^7 g h
RESET--复位信号,高电平有效。该信号用来清除所有的内部寄存器,并将A口、B口和c口均置成输入状态。
- \, _2 ~, b# y8 g! O0 O A1、A0——端口寻址信号。8255A含有3个数据端口和一个控制字端口,需要有两个输
& C- \( }$ P% x# g! T5 `6 R
入端来进行端口选择,这就是A1和A0。
& n6 y- \2 _3 b# t+ \6 {8 R& n, o
实际上,A1、A0、RD(上划线)、WR(上划线)和CS(上划线)通过组合起作用,它们的各种组合所要完成的操作见表6.1
) D7 F3 K# }* |9 H, g+ z( Q
^3 M) ]$ t; E, i/ _
4 @! g+ Y" k' C/ Y3 F
% z1 Y% j3 g: w/ M
0 [- \- L6 M8 S5 [0 `- w& Z5 o7 T/ _4 J! @9 D/ a+ p8 \; E
一般情况下,A1和A0分别接系统地址总线的最低两位(A1和A0)。但在8086系统中由于地址的最低位A0兼作低8位的数据传送控制信号,不能再参与8255A内部端口的寻址,所以端口寻址引脚Al、A0一般接系统地址总线的A2和A1。当确定了端口寻址引脚的接法,8255A的各个端口的地址也就确定下来,见表6.2。一片8255A要占用4个I/O端口地址,A口的地址可作为其他端口地址的基准,因此,在表6.2中,将A口的地址称为基地址(简称基址)。和存储器芯片片选信号的产生相类似,8255A的片选信号由用于片内端口寻址以外的地址(高位地址)译码产生。
9 n9 X3 n7 _- O% m% X( p/ O
: J' g% ?9 Y/ Z& L' V) `