最后一种表达方式限制了逻辑变量名只能包含单个字母。图2.1非门图2.2与门在Verilog中,用“&”符号作与运算符。图2.2所示与门的表达式为z=x&y3.或门图2.3所示为或门的逻辑符号和真值表。或门的逻辑符号为两个输入x,y和一个输出z。当x或y中有一个为1("真”或高电平)或两个都为1时,或门输出z为1;只有当x和y都为0时,输出z为0。常见的或运算表达形式有xvyxUyz=x+yx#y在Verilog中,用“”符号作或运算符。图2.3所示或门的表达式z为:z=xly。图2.3或门可能会使人惊的地方在于,所有的数字系统,包括计算机,都可以用这3种基本的逻辑门构建。接下来我们将介绍其他4种常用逻辑门,它们也可以用上述的基本逻辑门构建,表达式中运算符采用Verilog语言符号。2.1.2四种常用逻辑门利用之前所述3种基本逻辑门,我们可以构建4种新的常用逻辑门:与非、或非、异或及同或门。1.与非门
4 最后一种表达方式限制了逻辑变量名只能包含单个字母。 图 2.1 非门 图 2.2 与门 在 Verilog 中,用“&”符号作与运算符。图 2.2 所示与门的表达式为 z=x&y。 3. 或门 图 2.3 所示为或门的逻辑符号和真值表。或门的逻辑符号为两个输入 x, y 和一个输出 z。 当 x 或 y 中有一个为 1 ("真”或高电平)或两个都为 1 时,或门输出 z 为 1;只有当 x 和 y 都为 0 时,输出 z 为 0。 常见的或运算表达形式有 z=x+y x#y x∨y x∪y 在 Verilog 中,用“|”符号作或运算符。图 2.3 所示或门的表达式 z 为: z=x|y。 图 2.3 或门 可能会使人惊讶的地方在于,所有的数字系统,包括计算机,都可以用 这 3 种基本的逻辑门构建。接下来我们将介绍其他 4 种常用逻辑门,它们也 可以用上述的基本逻辑门构建,表达式中运算符采用 Verilog 语言符号。 2.1.2 四种常用逻辑门 利用之前所述 3 种基本逻辑门,我们可以构建 4 种新的常用逻辑门:与 非、或非、异或及同或门。 1.与非门
图2.4所示为与非门的逻辑符号和真值表。与非门的逻辑符号同与门的逻辑符号非常相似,只是在输出端多了一个小圆圈。从真值表中我们看到,当且仅当与非门的两个输入都为1时,输出z为0;否则,z为1。另外,从图中两个真值表中我们得知,与非门等价于与门连接一个非门。811图2.4与非门2.或非门图2.5所示为或非门的逻辑符号和真值表。或非门的逻辑符号同或门的逻辑符号非常相似,只是在输出端多了一个小圆圈。从真值表中我们看到,当且仅当或非门的两个输入都为0时,输出z为1。或非门等价于或门之后接一个非门。Owxlyw(xly)图2.5或非门3.异或门图2.6所示为异或门的逻辑符号和真值表。异或门的逻辑符号同或门的逻辑符号相似,只是在输入端多了一段圆弧。从真值表中我们看到,当异或门的两个输入不同(一个为1,一个为0)时,输出z为1;当两个输入相同(同
5 图 2.4 所示为与非门的逻辑符号和真值表。与非门的逻辑符号同与门的 逻辑符号非常相似,只是在输出端多了一个小圆圈。从真值表中我们看到, 当且仅当与非门的两个输入都为 1 时,输出 z 为 0;否则,z 为 1。另外, 从图中两个真值表中我们得知,与非门等价于与门连接一个非门。 图 2.4 与非门 2.或非门 图 2.5 所示为或非门的逻辑符号和真值表。或非门的逻辑符号同或门的 逻辑符号非常相似,只是在输出端多了一个小圆圈。从真值表中我们看到, 当且仅当或非门的两个输入都为 0 时,输出 z 为 1。或非门等价于或门之后 接一个非门。 图 2.5 或非门 3.异或门 图 2.6 所示为异或门的逻辑符号和真值表。异或门的逻辑符号同或门的 逻辑符号相似,只是在输入端多了一段圆弧。从真值表中我们看到,当异或 门的两个输入不同〔一个为 1,一个为 0)时,输出 z 为 1;当两个输入相同(同
为1或同为0)时,输出z为0在Verilog中,用“^"符号作异或运算符。异或门的逻辑表达式为z=xy从图2.6中我们看到,异或门可以通过两个反相器、两个与门和一个门构建。因此,异或运算叫一以写成:(2.1)z=xy=(~x&y))(x&~y)图2.6异或门4.同或门图2.7所示为同或门的逻辑符号和真值表。同或门实质上就是非异或门,所以它的逻辑符号与异或门的逻辑符号相似,只是在输出端多了一个小圆圈。从真值表中我们看到,当同或门的两个输入相同时(同为0或同为1时),其输出为1:当两个输入不同时(一个为1而另一个为0),其输出为0。图2.7同或门在Verilog中,用“_^”,符号作同或运算符。同或门的逻辑表达式为z=x~^y.Z
6 为 1 或同为 0)时,输出 z 为 0。 在 Verilog 中,用“^”符号作异或运算符。异或门的逻辑表达式为 z=x^y。 从图 2.6 中我们看到,异或门可以通过两个反相器、两个与门和一个门 构建。因此,异或运算叫一以写成: z=x^y=(~x&y)}(x&~y) (2.1) 图 2.6 异或门 4.同或门 图2.7所示为同或门的逻辑符号和真值表。同或门实质上就是非异或门, 所以它的逻辑符号与异或门的逻辑符号相似,只是在输出端多了一个小圆 圈。从真值表中我们看到,当同或门的两个输入相同时(同为 0 或同为 1 时), 其输出为 1;当两个输入不同时(一个为 1 而另一个为 0),其输出为 0。 图 2.7 同或门 在 Verilog 中,用“~^”,符号作同或运算符。同或门的逻辑表达式为 z=x~ ^y
2.2基于乘积和的设计对于真值表中的每一行,都可以写出对应的乘积项,也就是最小项(minterm)。最小项由各输入变量做与运算构成。如果真值表中某行某一变量(比如x)的输入值为1,我们直接将其写为x。与此相对,如果其输入值为0,我们就将其写为~x。因此,对于图2.8所示的真值表中的第一行,其最小项应写成mo=~x&~y。注意:当x和y均为0时,其输出值为0。同样,第三行的最小项应为m2=x&~y。注意:当x为1且Y为0时,其输出为1。图2.8列出了两输入(x,y)户的所有最小项表达式。minterms00nmm--rdy01m,=x&)m2=x&~)10m&-ymi=x&ymm(x&y)/(x&~y)图2.8基于1输出的乘积和设计图2.8所小右边的真值表对应异或运算函数。观察其中输出为1的各行我们注意到当mi或m2为1时,输出z为1。而当x为。且y为1时,ml为1,因为此时~x&y的值为1。同理,当x为1目~y为0时,m2为1。将mi和m2(也就是输出值为1的最小项)做或运算,就可以得到z的最终表达式:z=m|m2(2.2)=(-x&y)(x&y) 这同我们在图2.6中所用的异或表达式一模一样。在逻辑表达式中,我们采用以下的优先级定义:(1)所有取反运算(“”)最先被执行。(2)所有与运算(“&”)其次被执行。(3)所有或运算(““)最后被执行。根据优先级的定义,式(2.2)就可以被写成以下形式:(2.3)z=-x&ylx&~y将真值表输出列中所有值为1的最小项做逻辑或运算,进而得到对应函数的逻辑表达式。这就是基于乘积和的设计。或运算符“}”代表逻辑和而与运算符“&”代表逻辑乘。式(2.3)所对应的逻辑电路如图2.9所示,同图2.6所示的逻辑电路一模一样。7
7 2.2 基于乘积和的设计 对于真值表中的每一行,都可以写出对应的乘积项,也就是最小项 (minterm)。最小项由各输入变量做与运算构成。如果真值表中某行某一变量 (比如 x)的输入值为 1,我们直接将其写为 x。与此相对,如果其输入值为 0, 我们就将其写为~x。因此,对于图 2.8 所示的真值表中的第一行,其最小项 应写成 m0=~x&~y。注意:当 x 和 y 均为 0 时,其输出值为 0。同样,第三 行的最小项应为 m2=x&~y。注意:当 x 为 1 且 Y 为 0 时,其输出为 1。图 2.8 列出了两输入(x,y)户的所有最小项表达式。 图 2.8 基于 1 输出的乘积和设计 图 2.8 所小右边的真值表对应异或运算函数。观察其中输出为 1 的各行, 我们注意到当 m1 或 m2 为 1 时,输出 z 为 1。而当 x 为。且 y 为 1 时,ml 为 1,因为此时~x&y 的值为 1。同理,当 x 为 1 目~y 为 0 时,m2为 1。将 ml和m2(也就是输出值为1 的最小项)做或运算,就可以得到 z的最终表达式: z=m1|m2 (2.2 ) =(~x&y)|(x&y) 这同我们在图 2.6 中所用的异或表达式一模一样。在逻辑表达式中,我 们采用以下的优先级定义: (1)所有取反运算(“~”)最先被执行。 (2)所有与运算(“&”)其次被执行。 (3)所有或运算(“|“)最后被执行。 根据优先级的定义,式(2.2)就可以被写成以下形式: z=~x&y|x&~y (2.3) 将真值表输出列中所有值为 1 的最小项做逻辑或运算,进而得到对应函 数的逻辑表达式。这就是基于乘积和的设计。或运算符“}”代表逻辑和, 而与运算符“&”代表逻辑乘。式(2.3 )所对应的逻辑电路如图 2.9 所示,同 图 2.6 所示的逻辑电路一模一样
图2.9异或函数的逻辑电路图2.3基于和项积的设计本节中,我们不再关注真值表中的,"1”输出行,转而将重点放在“Q输出行,如图2.13所示。在这种情况下,输出:为非最小项mo(NOTmo)和非最小项m3(NOTm3)的逻辑与。那么非最小项是什么意思呢?从上节最小项的定义及德摩根定律,我们可以推出:NOT mintenn mo= ~mo=~(~x&~y)=~~(xly)=xly我们称此为最大项(maxterm)Mo。图2.11给出了真值表中所有最大项表达式。请注意:每个最大项为相应最小项取反得到。可以用德摩根定律来验证每个最大项表达式。N0560图2.10从0输出得到和项积的设计结合图2.10和图2.11得知,输出可以写作真值表中所有最大项之积。所以,如图2.12所示,异或运算函数也可以写成:z=M0&M3=(xly)&(~x-y)(2.4)这就是和项之积的表达形式,对应的逻辑电路如图2.13所示。比较图2.9和图2.13的逻辑电路发现,虽然它们的电路不同,但最后实现的逻辑函数8
8 图 2.9 异或函数的逻辑电路图 2.3 基于和项积的设计 本节中,我们不再关注真值表中的,"1”输出行,转而将重点放在“Q; 输出行,如图 2.13 所示。在这种情况下,输出:为非最小项 m0(NOT m0)和非 最小项 m3(NOT m3)的逻辑与。那么非最小项是什么意思呢?从上节最小项 的定义及德摩根定律,我们可以推出: NOT mintenn m0= ~m0 =~(~x&~y) =~~(x|y) =x|y 我们称此为最大项(maxterm ) M0。图 2.11 给出了真值表中所有最大项 表达式。请注意:每个最大项为相应最小项取反得到。可以用德摩根定律来 验证每个最大项表达式。 图 2.10 从 0 输出得到和项积的设计 结合图 2.10 和图 2.11 得知,输出 z 可以写作真值表中所有最大项之积。 所以,如图 2.12 所示,异或运算函数也可以写成: z=M0&M3=(x|y)&(~x|~y) (2.4) 这就是和项之积的表达形式,对应的逻辑电路如图 2.13 所示。比较图 2.9 和图 2.13 的逻辑电路发现,虽然它们的电路不同,但最后实现的逻辑函数