微型机中的三态逻辑

🏠 首页 《无线电》杂志 1985年 🔗 第3期 🔗 第14页 分类:应用电子仪器 🔗 焦宝文 🔗, 吴文虎 🔗

三态输出电路是微型计算机中用得较多的一种电路。我们先通过一个例子来说明什么是三态电路和为什么要用三态电路。图1中有两个6伏的小灯泡接在晶体管电路中,电源也是6伏。两只三极管的基极接在一起做为控制线,当A点为高电平,BG\(_{1}\)导通,BG2截止,L\(_{1}\)亮,L2暗;当A点为低电平时,BG\(_{2}\)导通,BG1截止,L\(_{2}\)亮,L1暗;如果没有电压加到A点,而是用一个较大的阻抗接地,那么两只管子都将处于截止状态,两个灯都不亮。从刚才的分析我们可以看出这个电路存在着三种状态:①L\(_{1}\)亮、L2暗;②L\(_{1}\)暗,L2亮:③L\(_{1}\)、L2都暗。这三种状态分别由控制线上电平的三种状态来决定。用什么样的电路能够对控制线的三种电平起控制作用呢?这就是三态输出电路。

图1
图1 🔍原图 (305×270)

图2是三态输出电路的逻辑符号,A是输入端,B是输出端;E是选通端或称控制端。图2(a)(b)这两种符号的不同意义后面还要讲。E与A配合起来就可以使B端的输出状态呈现高电平、低电平和高阻(禁止)三种状态。

图2
图2 🔍原图 (422×180)

三态输出电路的结构和工作原理:为了说明三态输出电路的工作原理,我们先来分析一下图3所示的典型电路,这个电路是由两个或非门,两个NMOS晶体管(BG\(_{1}\),BG2)和一个非门组成,下面分两种情况来研究:

图3
图3 🔍原图 (231×266)

1.当选通端E接高电平(E=1)时,通过与非门加至两个或非门输入端的为低电平(即C=0),根据或非门输入输出间的逻辑表达式:

G\(_{1}\)=E-+G2=C+G\(_{2}\)=0+G2=G\(_{2}\)

G\(_{2}\)=E-+A=C+A=0+A=A

G\(_{1}\)=G2=A=A

可知,两个或非门的输出状态将取决于输入端A的电平。这又有两种情况:

(1)当A=1时,G\(_{2}\)=A-=0,G1=A=1,从而使BG\(_{1}\)导通,BG2截止,输出电平V\(_{B}\)≈VPP(即B=1)。从逻辑值上看B=A。

(2)当A=0时,G\(_{2}\)=A-=1,G1=A=0,从而使BG\(_{2}\)导通,BG1截止,输出电平V\(_{B}\)≈0(即B=0)。从逻辑值上看也有B=A

可见,在选通端E接高电平时,输入端的两种可能状态,直接反映到输出端,也就是说E=1时,B=A。

2.当选通端E接低电平(即E=0)时,通过非门加至两个或非门输入端的将为高电平(即C=1),或非门输入输出间的逻辑表达式为:

G\(_{1}\)=E-+G2=C+G\(_{2}\)=1+G2=1--=0

G\(_{2}\)=E-+A=C+A=1+A=1=0

因此可知,无论输入端A为高电平或低电平,两个或非门的输出均为低电平,从而使BG\(_{1}\)、BG2同时处于截止状态。这时B端处于高阻状态。

根据上述分析,我们可以得出结论,如图3的真值表所示。我们还可以总结出下面两句非常有用的话:

选通端E处在选通状态(E=1)时,输出端的状态取决于输入端的状态,即B=A。

选通端E处于禁止状态(E=0)时,输出端的状态总是高阻状态,与A无关。

图4
图4 🔍原图 (371×291)

图4电路的逻辑符号是用图2(a)来描述的,这时可以想像作:E=1时,电路处在选通状态A可以“直通B”(当然这是指逻辑上相等);而当E=0时,“通路被禁止”或“被切断”,使B处于高阻状态。读者可能会问:图2(b)的符号所对应的电路又如何呢?

图5
图5 🔍原图 (401×278)

图5画出了对应图2(b)所示符号的电路,它也是由两个或非门,两个NMOS晶体管(BG\(_{1}\),BG2)和一个与非门组成,不过联接的方式与图4不同。我们仍然可以采用上面的方法进行逻辑分析。

1.当选通端E=0时,采用前述分析方法可以推出:

G\(_{1}\)=A G2=A-从而得到B=A。

2.当选通端E=1时,可以推出:

G\(_{1}\)=0 G2=0 这时BG\(_{1}\)、BG2同时处于截止状态,自然B端处于高阻状态。

图5电路的真值表请见图6从真值表上可以看出,对于图5这种电路,选通端E接低电平(E=0)时,电路处于工作状态,这时B=A,或者说这时输出状态由输入状态决定,且输出状态与输入状态相同,而当选通端E接高电平(E=1)时,电路处于禁止状态,输出端B为高阻状态。图4与图5的不同之处在于前者以E=1作为选通状态,后者以E=0作为选通状态。为将两者加以区别,在图2(b)中的E端增加了一个小圆圈,这个小圈的含义是E=0作为选通状态,以便与图2(a)的符号相区别。

图6
图6 🔍原图 (229×261)

三态输出电路的应用举例:我们先回到图1的电路上,比如有三个人都可以控制L\(_{1}\)、L2两盏灯使之处于三种状态。不过要约定好其中一个人发出了控制信号,别人就不能再发出控制信号了。要控制这个电路就要控制BG\(_{1}\)、BG2管的基极,三个人都同基极引出线打交道,就需要用三个三态输出电路,接成图7所示的电路。当第一个人要控制灯时,他使E\(_{1}\)=1,而其它两人使E2=E\(_{3}\)=0,这时B2与B\(_{3}\)呈高阻状态,不会对电路产生任何影响,而B1=A\(_{1}\),用A1的电平高低来控制L\(_{1}\)亮或L2亮。如果第二个人想控制,就让E\(_{2}\)=1,让E1=E\(_{3}\)=0。如果三个人都不控制,则使E1=E\(_{2}\)=E3=0,这时B\(_{1}\)2\(_{3}\)都处于高阻状态,L1和L\(_{2}\)都不亮。

图7
图7 🔍原图 (503×275)

从上面的例子中可以悟出一些道理:多个三态输出电路的输出端可以连在一根公共线上,使每个输出电路都可以把信号加到这条公用线上。正是由于这一点,三态输出电路在微型计算机上得到了广泛的应用。假如我们要用一根线轮流传送四个信号,这时我们可以用四个三态输出电路将信号源与传送线(在计算机中称总线)连接起来,再将四个三态输出电路的选通端,接到一个控制电路上,(如图8所示)使之轮流为1,就可以轮流将四个信号经过这根总线传出去。

图8
图8 🔍原图 (388×397)

在微处理器(MPU)与数据总线连接时要用到所谓“双向驱动器”(图9所示),它既能使MPU把数据从数据总线上取进来,又能将数据送到数据总线上。这种双向驱动器实际上是由两种三态输出电路构成的。其中一个是以E=1为工作状态,另一个是以E=0为工作状态。一个工作,保证另一个处于高阻状态。在八根数据线上,每一根都接有这样一个双向驱动器,然后将所有的选通端E接在一起,由读写信号(R/W-)和时钟信号(Φ\(_{1}\))通过一个或门来加以控制。当MPU发出“读”信号时,在时钟信号Φ1=1的情况下。E=1,输出端接MPU的那8个三态输出电路处于工作状态,另外8个处于高阻状态。这时总线上的数据(可能来自存储器,也可能来自外部设备)就可以读入MPU。当MPU发出“写”信号,在时钟信号Φ\(_{1}\)=0时,E=0,使输入端接MPU的8个三态输出电路处于工作状态,而刚才说输出端接MPU的8个三态输出电路处于高阻状态。这时MPU就可以把数据传给总线。

图9
图9 🔍原图 (531×1065)

在微计算机中MPU与地址总线(一般有16根线)连接也要接单向驱动器,这时要用16个三态输出电路。在微型计算机的输入/输出端口电路中,用三态输出电路和锁存器构成输入缓冲器和输出缓冲器,以使输入或输出信号保持稳定。在微计算机中还有许多地方要用到三态输出电路,这里就不一一列举了。(吴文虎 焦宝文)