电子技术——CMOS 逻辑门电路
在本节我们介绍如何使用CMOS电路实现组合逻辑函数。在组合电路中,电路是瞬时发生的,也就是电路的输出之和当前的输入有关,并且电路是无记忆的也没有反馈。组合电路被大量的使用在当今的数字逻辑系统中。
晶体管的开关模型
CMOS数字电路使用NMOS和PMOS晶体管作为开关使用。之前,我们知道,MOS可以工作在三极管区(相当于开关闭合),也可工作在截止区(相当于开关断开)。
特别的,当一个NMOS作为闭合的开关的时候,此时栅极电压处于高电压,相当于一个从漏极到源极直接相当小的一个电阻
R
o
n
R_{on}
Ron 或
r
D
S
r_{DS}
rDS ,通常处在高电压
V
D
D
V_{DD}
VDD 状态,表示逻辑1。相反,当栅极为低电压的时候,此时MOS截止,表示逻辑0,没有电流流过MOS,如图:
而PMOS则工作在相反的状态,栅极高电压,MOS管截止,栅极低电压,MOS管导通,如图:
我们观察到MOS管的栅极通常是逻辑控制输入节点,通常作为逻辑门的输入端。
CMOS反相器
在了解MOS开关的工作方式之后,先让我们制作一个反相器。正如其名,反相器可以逆转输入的逻辑,即输入0输出1,反之亦然。因此该功能可以使用布尔函数表示为:
Y
=
X
‾
Y = \overline{X}
Y=X
其抽象电路模型和实现电路如图所示:
它由一对CMOS组成,栅极相连,作为输入端
X
X
X ,漏极相连作为输出端
Y
Y
Y 。当
X
=
1
X=1
X=1 的时候,即
V
X
=
V
D
D
V_X = V_{DD}
VX=VDD ,此时PMOS截止,而NMOS导通,输出
Y
=
0
Y = 0
Y=0 。当
X
=
0
X=0
X=0 的时候,PMOS导通而NMOS截止,此时输出
Y
=
1
Y=1
Y=1 。
CMOS逻辑门的一般结构
由上面的反相器我们能总结出CMOS逻辑门的一般结构,反相器由一个NMOS 下拉晶体管 和一个PMOS 上拉晶体管 组成。CMOS逻辑门由两个网络组成:一是 下拉网络PDN 由NMOS组成 ,二是 上拉网络PUN 由PMOS组成。如图:
这两个网络都受到输入变量的控制,做出相反的行为,上图是一个三变量输入的逻辑门,当输入变量满足PDN条件的时候,此时PDN网络导通,而PUN网络截止,输出
Y
=
0
Y=0
Y=0 ,反之亦然。
因此,我们可以根据不同的PDN和PUN的实现,来实现与门、或门等一些基本的门电路,下图是一些PDN网络的例子:
在图(a)我们发现当
A
=
1
A=1
A=1 的时候,
Q
A
Q_A
QA 导通此时
Y
=
0
Y = 0
Y=0 ,同样的对于
B
=
1
B = 1
B=1 ,
Q
B
Q_B
QB 导通此时
Y
=
0
Y = 0
Y=0 ,因此图(a)是一个或门的PDN实现,可以表示为:
Y
‾
=
A
+
B
\overline{Y} = A + B
Y=A+B
或是:
Y
=
A
+
B
‾
Y = \overline{A + B}
Y=A+B
图(b)必须两个NMOS全部导通才能输出,是一个与门结构,可以表示为:
Y
‾
=
A
B
\overline{Y} = AB
Y=AB
或是:
Y
=
A
B
‾
Y = \overline{AB}
Y=AB
最后一个例子图©是一个组合逻辑,可以表示为:
Y
‾
=
A
+
B
C
\overline{Y} = A + BC
Y=A+BC
或者等效于:
Y
=
A
+
B
C
‾
Y = \overline{A + BC}
Y=A+BC
接下来我们考虑一些PUN的一些例子,如图:
图(a)当
A
=
0
A = 0
A=0 或是
B
=
0
B = 0
B=0 的时候输出
Y
=
1
Y = 1
Y=1 表示为:
Y
=
A
‾
+
B
‾
Y = \overline{A} + \overline{B}
Y=A+B
图(b)当
A
=
0
A=0
A=0 并且
B
=
0
B= 0
B=0 的时候导通,表示为:
Y
=
A
‾
B
‾
Y = \overline{A} \ \overline{B}
Y=A B
而图©表示为:
Y
=
A
‾
+
B
‾
C
‾
Y = \overline{A} + \overline{B} \ \overline{C}
Y=A+B C
在学习完PDN和PUN理论之后,我们就可以准备搭建我们的门电路了。首先,为了方便,我们不再使用模拟电路中的MOS符号,而是使用一种更加方便的数字电路MOS表示符号,如图:
上图中左边的符号是模拟MOS表示,而右边是数字MOS表示,对于PMOS我们发现在栅极的地方有一个小圈,这表示当输入是低电压的时候才导通。除此之外,数字MOS忽略了漏极栅极之分。
或非门NOR电路
首先我们考虑一个CMOS的或非门电路:
Y
=
A
+
B
‾
=
A
‾
B
‾
Y = \overline{A + B} = \overline{A} \ \overline{B}
Y=A+B=A B
等式中间给出了PDN实现,等式右边给出了PUN实现,将两个实现组合在一起,我们得到:
与非门NAND电路
与非门电路可以表示为:
Y
=
A
B
‾
=
A
‾
+
B
‾
Y = \overline{AB} = \overline{A} + \overline{B}
Y=AB=A+B
等式中间给出了PDN实现,等式右边给出了PUN实现,将两个实现组合在一起,我们得到:
一个更复杂的门电路
考虑下面的组合布尔表达式:
Y
=
A
(
B
+
C
D
)
‾
Y = \overline{A(B+CD)}
Y=A(B+CD)
因为PDN是整体反相,因此可以直接给出PDN实现,对于PUN则是变量反相,可以通过德·摩根定律展开表达式:
Y
=
A
‾
+
B
‾
(
C
‾
+
D
‾
)
Y = \overline{A} + \overline{B}(\overline{C} + \overline{D})
Y=A+B(C+D)
给出实现:
需要注意的是,有时候并不总是可以通过对偶律来获得两个网络的实现。对于以上情况,需要更加复杂的布尔逻辑推导。
异或门XOR电路
另一个重要的逻辑电路是异或门电路,表示为:
Y
=
A
B
‾
+
A
‾
B
Y = A \overline{B} + \overline{A}B
Y=AB+AB
我们观察到给出
Y
Y
Y 我们可以先考虑PUN,但不幸的是,表达式不是由每个变量的反相值构成,因此我们需要额外的反相器,如图的PUN:
如上图,左边的
A
‾
\overline{A}
A 和右边的
B
‾
\overline{B}
B 都需要先反相才能输入到PUN中,因此需要额外的两个反相器,对于PDN,通过对偶变换可以得到:
Y
‾
=
A
B
+
A
‾
B
‾
\overline{Y} = AB + \overline{A} \ \overline{B}
Y=AB+A B
对应的PDN实现为:
同样需要两个额外的反相器。则此异或门电路总共需要12个晶体管。
有趣的是,上图中两个PDN和PUN网络不是对偶网络,实际上,PDN和PUN网络对偶并不是必要条件。
总结
PDN网络可以通过关于非互补变量的
Y
‾
\overline{Y}
Y 的表达式得到,若表达式中存在互补变量,需要额外的输入反相器。PUN网络可以通过关于互补变量的
Y
Y
Y 的表达式得到,若表达式中存在非互补变量,需要额外的输入反相器。PDN网络可以将PUD网络进行对偶得到,反之亦然。
精彩文章
发表评论