电子技术——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网络进行对偶得到,反之亦然。
发表评论