上节内容介绍了基本逻辑运算的含义,真值表,逻辑方程等内容。这些基本运算还不足以描述整个事物发展的各个状态的逻辑关系。但逻辑代数已经构建了整个逻辑运算的规则,这些规则就是由基本逻辑运算与、或、非得各种组合形成。在学习与、或逻辑时就已经提到了多项组合,如Y=ABCD, Y=A+B+C+D 等。但逻辑代数中不仅能完成这些简单的组合运算,它们之间也能相互组合,如“与”和“非”组合形成与非,“与”、“或”组合形成“与或”逻辑,“或”、“非”组合形成“或非”逻辑等运算,组合后的逻辑还可以继续组合,最终形成非常复杂的组合逻辑运算,如:Y=AB+CD。当然这些复杂的组合逻辑在运算时也遵守特定的数学规则,如运算的优先级,运算顺序(如从左到右的计算顺序),交换律,结合律,分配律等。在学习逻辑符号,真值表和逻辑函数后,就以这三种更专业的方式为大家介绍组合逻辑设计。
1. 与非逻辑运算
与非逻辑运算是将与运算和非运算组合在一起的运算。
-
逻辑函数如下:
-
与非逻辑符号
与非的逻辑符号如图1所示,左边的是IEC(国际电工委员会)规定的逻辑符号,右边的ANSI与IEEE(电气工程师协会)规定的与非逻辑符号,便于在逻辑设计中使用。
图1 与非逻辑符号
图2 与非逻辑真值表
对于与非运算,也可以分两步进行,如Y=~(A&B),第一步,Z=A&B, 第二部Y =~Z。如图3所示,
图3 与非门的等效电路符号
注意: 由于在与非组合运算时“非”的优先级高于“与”, 因此为了正确表达,在需要的地方应加(), 如Y=~(A&B)与Y=~A&B的含义是不同的;Y=~A&B的含义是先将A取非再与B相与。
2. 或非运算
或非运算是将或运算和非运算组合在一起的运算。
- 逻辑函数
- 逻辑符号
图4 或非逻辑符号
- 真值表
图5 或非逻辑真值表
同样或非也可以看成两步运算,即先进行A与B或运算,再将结果取非。如图6所示,
图6 或非等效电路符号
注意: 由于在与非组合运算时“非”的优先级高于“或”, 因此为了正确表达,在需要的地方应加(), 如Y=~(A|B)与Y=~A|B的含义是不同的;Y=~A|B的含义是先将A取非在与B相或。
3. 与或运算
与或运算是指在逻辑方程中,赋值语句右边的逻辑表达式既含有与逻辑,又包含或逻辑;先“与”后“或”,如 逻辑函数Y=AB+CD, 在逻辑表达式AB+CD中,先计算AB,CD后计算二者的或。由于与逻辑的优先级高于或逻辑,因此Y=AB+CD与Y=(AB)+(CD)。电路逻辑符号如图7所示。
图7 与或电路符号
由于与或运算是常规设计,没有规定特定符号,直接由与门电路符号及或门电路符号组合设计而成。
4. 或与运算
或与运算是指在逻辑函数中,赋值语句右边的逻辑表达式既含有或逻辑,又含有与逻辑,先“或”后“与”,如 逻辑函数Y=(A+B)(C+D), 在逻辑表达式(A+B)(C+D)中,先计算A+B,C+D后计算二者的与。由于与逻辑的优先级高于或逻辑,因此Y=(A+B)(C+D)中的括号不能省略。电路逻辑符号如图8所示。
图8 或与逻辑电路符号
由于或与运算是常规设计,没有规定特定符号,直接由或门电路符号及与门电路符号组合设计而成。
5. 异或逻辑
异或逻辑也是由与、或、非组合而成,但由于异或是常用的逻辑,特别在通信和编码领域应用及其广泛,因此异或有专门的符号。
-
逻辑表达式:
(1) ———–数字电路的表达方式
Y =(~A)B|A(~B) = ~AB|A~B =A^B (2) —————in Verilog or System Verilog
在数字电路中以⊕表示异或运算,在Verilog或System Verilog中以^表示异或运算。从表达式 ~AB|A~B可以看出“非”运算优先级高于“与”和“或”运算,因此括号可以省略。
-
异或真值表
图9
从真值表中可以看出,只有A,B的值不同时,Y的值为1,否则为0。
-
异或逻辑符号
- 异或逻辑由与、或、非设计的符号如图10:
图10
根据 逻辑函数Y =(~A)B|A(~B) = ~AB|A~B 生成的逻辑电路符号如图11,
图11 由与或非构成的异或电路
异或逻辑可以实现一位加法运算。因为异或运算与1位加法运算的真值表相同。这一点在2进制数运算时就已经探讨过。
6. 与或非逻辑
与或非运算就是在与、或运算之后再叠加非运算。
-
逻辑方程:
-
————数字电路
- Y = ~(A&B|C&D)= ! (A&B|C&D) ———– Verilog 或System Verilog
-
-
逻辑符号
图12
作业题:
(1)用2输入端与门实现 Y=ABC, 画出真值表并验证结果 。
(2) 用2输入端或门实现 Y=A+B+C, 画出真值表并验证结果。
(3)用2输入端与、或门实现 Y=ABC+AC ,画出真值表并验证结果。
(4)用2输入端与非、或非门实现 Y=AB ,画出真值表并验证结果。
(5)用2输入端与、或、非门实现 Y=~(AB) +BC 画出真值表并验证结果。
(6)用2输入端与、或、非门实现 Y=~(AB +BC) 画出真值表并验证结果。
(7)用2输入端与非门、或门实现 Y=AB +BC。
(8)用2输入端与非、或门实现 Y=~(A+B+ BC)。并注意观察Y=~(A+B+ BC)与Y=~(A+C)的有何不同。(提示,(1)真值表对比,(2)A+1=1 , A•1=A)
(9)用2输入端或非门实现 Y = A+B。
(10)用2输入端与、或非门实现 Y = AB +BC 画出真值表。
(11)用2输入端与、或、非门实现 Y = AB + BC 画出真值表。