好的,我们来将这份关于“组合逻辑设计”的PPT演示文稿,转换成一份详尽的中文自学讲义。讲义将包含PPT中的所有核心内容,并补充必要的解释和背景知识,帮助您更好地理解。
自学讲义:ECE 2050 数字逻辑与系统
第五章:组合逻辑设计
授课教师: 郑玥博士 (Yue ZHENG, Ph.D.) 学校: 香港中文大学(深圳)
第一部分:上周内容回顾
在深入学习本章之前,我们首先回顾一下上周涉及的关键概念。这些是理解组合逻辑设计的基础:
- 组合电路 (Combinational Circuits): 电路的输出仅由其当前的输入值决定,不依赖于过去的状态。它没有记忆功能。
- 布尔方程 (Boolean Equations): 使用变量和逻辑运算符(与、或、非)来描述电路逻辑关系的数学表达式。
- 公理与定理 (Axioms & Theorems): 布尔代数的基本规则。
- 交换律 (Commutative laws):
A + B = B + A
;A · B = B · A
- 结合律 (Associative laws):
(A + B) + C = A + (B + C)
;(A · B) · C = A · (B · C)
- 分配律 (Distributive law):
A · (B + C) = A · B + A · C
- 布尔代数基本规则 (Rules of Boolean Algebra): 如
A + 0 = A
,A · 1 = A
,A + A' = 1
等。 - 德摩根定律 (DeMorgan’s Theorems):
(A + B)' = A' · B'
;(A · B)' = A' + B'
。这是数字逻辑中非常重要的一个定理。
- 交换律 (Commutative laws):
- 化简布尔方程 (Simplifying Equations): 使用布尔代数的公理和定理来简化复杂的逻辑表达式,从而使用更少的逻辑门实现相同的功能,降低成本和复杂性。
- SOP和POS (SOP and POS):
- SOP (Sum of Products) - 积之和: 将多个“与”项(乘积项)通过“或”运算连接起来的形式。例如:
Y = AB + A'C
。 - POS (Product of Sums) - 和之积: 将多个“或”项(求和项)通过“与”运算连接起来的形式。例如:
Y = (A + B) · (A' + C)
。
- SOP (Sum of Products) - 积之和: 将多个“与”项(乘积项)通过“或”运算连接起来的形式。例如:
- 卡诺图 (Karnaugh Maps): 一种图形化的方法,用于简化布尔表达式,尤其适用于3到5个变量的情况。
- 无关项 (Don’t Cares): 在某些输入组合下,输出是无关紧要的(可以是0也可以是1)。在用卡诺图化简时,我们可以利用无关项来获得更简洁的表达式。
第二部分:基本组合逻辑电路
本部分我们将学习几种由基本逻辑门构成的标准电路结构。
2.1 与或逻辑 (AND-OR Logic)
与或逻辑是最基础、最直接的组合逻辑形式之一。
- 结构: 它是一个两级逻辑结构,第一级是多个 与门(AND),第二级是一个 或门(OR)。
- 功能: 这种结构直接实现了 SOP (积之和) 形式的布尔表达式。每一个与门对应一个乘积项,或门将这些乘积项相加。
- 示例:
Y = A'B'C' + A'BC' + ABC'
- 这个表达式有三个乘积项(minterm):
A'B'C'
,A'BC'
, 和ABC'
。 - 在电路实现中,我们需要三个三输入的与门来分别实现这三个乘积项。
- 然后,将这三个与门的输出连接到一个三输入的或门,最终得到输出 Y。
- 这个表达式有三个乘积项(minterm):
2.2 与或逻辑实例:液位监控电路
-
问题描述: 有三个化学储罐(A, B, C),每个储罐都配有一个液位传感器。当液位低于某个特定点时,传感器输出 高电平 (HIGH/1)。请设计一个电路,当 任意两个 储罐的液位低于特定点时,点亮一个低液位指示灯。
-
设计思路:
- 定义输入和输出:
- 输入: A, B, C (来自三个传感器的信号)。1表示液位低。
- 输出: Y (低液位指示灯)。1表示点亮。
- 构建真值表: 我们需要找出所有满足“任意两个或三个储罐液位低”的输入组合。 | A | B | C | Y (指示灯) | 说明 | | :--- | :--- | :--- | :--- | :---------------------------------- | | 0 | 0 | 0 | 0 | 0个储罐液位低 | | 0 | 0 | 1 | 0 | 1个储罐液位低 | | 0 | 1 | 0 | 0 | 1个储罐液位低 | | 0 | 1 | 1 | 1 | A和B液位低 | | 1 | 0 | 0 | 0 | 1个储罐液位低 | | 1 | 0 | 1 | 1 | A和C液位低 | | 1 | 1 | 0 | 1 | B和C液位低 | | 1 | 1 | 1 | 1 | 三个储罐液位低 |
- 写出SOP表达式: 从真值表中找出所有 Y=1 的行,写出对应的乘积项并相加。
Y = A'BC + AB'C + ABC' + ABC
- 化简表达式 (可选,但推荐):
使用布尔代数或卡诺图可以化简此表达式:
Y = BC(A' + A) + AC(B' + B) + AB(C' + C)
… (重复项) 更简单的化简:Y = BC + AC + AB
- 绘制电路图: 根据化简后的表达式
Y = AB + AC + BC
,我们可以用三个双输入与门和一个三输入或门来实现该电路。
- 定义输入和输出:
2.3 与或非逻辑 (AND-OR-Invert Logic)
这是一种与“与或逻辑”密切相关的结构,在集成电路设计中非常常见。
- 结构: 在一个标准的“与或逻辑”电路的输出端增加一个 非门(Inverter)。
- 功能: 它实现了对SOP表达式的“取反”操作。根据德摩根定律,这个结果等效于一个 POS (和之积) 形式。
- 示例:
Y = (AB + CD)'
- 电路首先通过两个与门计算
AB
和CD
。 - 然后通过一个或门计算
AB + CD
。 - 最后通过一个非门得到最终结果
Y = (AB + CD)'
。 - 根据德摩根定律,
Y = (AB)' · (CD)' = (A' + B') · (C' + D')
。这个最终形式就是一个POS形式,说明了与或非逻辑与POS形式的内在联系。
- 电路首先通过两个与门计算
2.4 异或 (Exclusive-OR / XOR) 逻辑
异或门是一种非常有用的基本逻辑门。
- 功能: 当两个输入 不相同时,输出为1;当两个输入 相同时,输出为0。可以理解为“不同为1,相同为0”。
- 布尔表达式:
X = A'B + AB'
- 符号:
X = A ⊕ B
- 真值表: | A | B | X | | :--- | :--- | :--- | | 0 | 0 | 0 | | 0 | 1 | 1 | | 1 | 0 | 1 | | 1 | 1 | 0 |
2.5 同或 (Exclusive-NOR / XNOR) 逻辑
同或逻辑与异或逻辑正好相反。
- 功能: 当两个输入 相同时,输出为1;当两个输入 不相同时,输出为0。可以理解为“相同为1,不同为0”,因此也叫“等价门”。
- 布尔表达式:
X = AB + A'B'
- 推导: 它是异或的取反,即
X = (A ⊕ B)' = (A'B + AB')'
。- 使用德摩根定律:
(A'B)' · (AB')' = (A + B') · (A' + B)
- 展开:
AA' + AB + B'A' + B'B = 0 + AB + A'B' + 0 = AB + A'B'
- 使用德摩根定律:
- 真值表: | A | B | X | | :--- | :--- | :--- | | 0 | 0 | 1 | | 0 | 1 | 0 | | 1 | 0 | 0 | | 1 | 1 | 1 |
第三部分:奇偶校验码 (Parity Codes)
奇偶校验是一种简单的数据错误检测技术。
3.1 偶校验 (Even Parity)
偶校验的规则是:为一个给定的数据位串(data bits)附加一个 校验位(parity bit),使得整个码字(数据位+校验位)中”1”的总数是 偶数。
- 2位偶校验:
- 数据位: A, B
- 校验位: X
- 规则: 如果 A 和 B 中”1”的个数是奇数,则 X=1;如果是偶数,则 X=0。
- 观察真值表可以发现,这与 异或(XOR) 门的逻辑完全相同。
X = A ⊕ B
。
3.2 3位偶校验码生成器
对于一个3位的数据码(A, B, C),偶校验位的生成逻辑是所有数据位的异或。
- 表达式:
X = A ⊕ B ⊕ C
- 电路实现: 可以通过串联两个异或门来实现。第一个门计算
A ⊕ B
,其结果再与 C 进行异或。
3.3 4位及更多位的偶校验
这个原理可以推广到任意位数。一个n位数据的偶校验位 P
是所有数据位 A₀, A₁, ..., Aₙ₋₁
的异或总和。
P = A₀ ⊕ A₁ ⊕ ... ⊕ Aₙ₋₁
3.4 偶校验检验器 (Parity Checker)
接收端如何使用校验位来检测错误?
- 原理: 将接收到的所有位(包括数据位和校验位)全部进行异或运算。
- 无错误: 如果没有发生错误,接收到的码字中”1”的个数应为偶数,因此所有位的异或结果将是 0。
- 有错误: 如果在传输过程中有一个位发生了翻转(0变1或1变0),则”1”的总数将变为奇数,所有位的异或结果将是 1,表示检测到错误。
- 电路: 一个n位数据+1位校验位的检验器,就是一个 (n+1) 输入的异或电路。其输出为1时,表示有错误。
注意: 奇偶校验只能检测到奇数个位的错误。如果同时有两个位发生错误,它将无法检测出来。
第四部分:组合电路的实现与化简
4.1 从表达式到电路
这是一个直接的翻译过程。
- 示例:
X = AB + CDE
AB
对应一个双输入与门。CDE
对应一个三输入与门。- 中间的
+
对应一个或门,将上述两个与门的输出连接起来。
4.2 从真值表到电路
这是一个标准的SOP设计流程。
- 在真值表中找出所有输出为1的行。
- 为每一行写出其对应的 最小项(minterm),即一个包含了所有输入变量的乘积项。
- 将所有这些最小项用“或”运算连接起来,就得到了电路的SOP表达式。
- 根据SOP表达式画出“与或逻辑”电路。
4.3 化简实例
实例1: “恰好三个1”检测电路
- 问题: 设计一个四输入电路,当且仅当输入中恰好有三个为1时,输出为1。
- 解法:
- 列出所有满足条件的输入组合: (0,1,1,1), (1,0,1,1), (1,1,0,1), (1,1,1,0)。
- 写出对应的SOP表达式:
X = A'BCD + AB'CD + ABC'D + ABCD'
。 - 这个表达式已经是最简SOP形式,无法再用卡诺图或布尔代数化简。
- 根据表达式画出电路图:四个四输入与门和一个四输入或门。
实例2 & 3: 电路化简
-
重要提示: PPT第18、19页的示例中,电路图、布尔表达式和卡诺图之间存在 不一致。这在教学材料中偶有发生。作为一个好的学习者,关键是掌握化简的方法,而不是死记硬背某个错误的例子。
-
正确的化简流程:
- 从电路图推导表达式: 仔细分析给定的电路图,写出其对应的原始布尔表达式。
- 化简表达式:
- 代数化简法: 应用布尔代数公理和定理,如
A+AB=A
,A+A'=1
等,一步步消去多余的项和变量。 - 卡诺图法: 将表达式填入卡诺图,通过圈出相邻的“1”(或无关项“X”)来找到最简的积之和(SOP)或和之积(POS)形式。
- 代数化简法: 应用布尔代数公理和定理,如
- 画出最简电路: 根据化简后的表达式,绘制新的、更简单的电路图。
4.4 实例4:优先电路 (Priority Circuit)
- 功能: 优先电路有多个输入,但只响应 优先级最高 的有效输入。
- 示例: 一个4输入优先电路 (A₃, A₂, A₁, A₀),其中A₃优先级最高,A₀最低。输出Y₃, Y₂, Y₁, Y₀表示哪个输入被响应。
- 逻辑:
- 如果 A₃=1,则输出响应A₃ (Y₃=1),并忽略其他所有输入。
- 如果 A₃=0 且 A₂=1,则输出响应A₂ (Y₂=1),并忽略A₁和A₀。
- 以此类推。
- 利用无关项化简:
Y₃
的逻辑很简单:Y₃ = A₃
。Y₂
的逻辑是:A₂必须为1,且所有比它优先级高的输入(即A₃)必须为0。所以Y₂ = A₃'A₂
。Y₁
的逻辑是:A₁为1,且A₃和A₂都为0。所以Y₁ = A₃'A₂'A₁
。Y₀
的逻辑是:A₀为1,且A₃, A₂, A₁都为0。所以Y₀ = A₃'A₂'A₁'A₀
。- 在构建真值表时,例如,只要A₃=1,A₂, A₁, A₀的值就是 无关项 (Don’t Cares),这可以极大地简化电路设计。
第五部分:与非门和或非门的通用性 (Universal Property)
“通用性”意味着仅使用一种逻辑门(与非门或或非门),就可以实现所有的基本逻辑功能(与、或、非)。
5.1 与非门 (NAND) 的通用性
- 实现 非 (NOT): 将与非门的两个输入连在一起。
(A · A)' = A'
。 - 实现 与 (AND): 在一个与非门的输出端再接一个与非门(作为反相器)。
((A · B)')' = A · B
。 - 实现 或 (OR): 使用德摩根定律。
(A' · B')' = A'' + B'' = A + B
。电路实现为:先用两个与非门分别得到A’和B’,再将它们输入到第三个与非门。 - 实现 或非 (NOR): 在上述“或”电路的输出端再加一个与非门(作为反相器)。
5.2 或非门 (NOR) 的通用性
- 实现 非 (NOT): 将或非门的两个输入连在一起。
(A + A)' = A'
。 - 实现 或 (OR): 在一个或非门的输出端再接一个或非门(作为反相器)。
((A + B)')' = A + B
。 - 实现 与 (AND): 使用德摩根定律。
(A' + B')' = A'' · B'' = A · B
。电路实现为:先用两个或非门分别得到A’和B’,再将它们输入到第三个或非门。 - 实现 与非 (NAND): 在上述“与”电路的输出端再加一个或非门(作为反相器)。
第六部分:气泡推演 (Bubble Pushing)
这是一种基于德摩根定律的图形化技巧,用于分析和转换电路图,使其逻辑功能更清晰。
-
核心思想 (德摩根定律的图形化):
- 一个 与非门 (NAND) 等价于一个 输入端带反相的或门 (Negative-OR)。
(AB)' = A' + B'
- 一个 或非门 (NOR) 等价于一个 输入端带反相的与门 (Negative-AND)。
(A + B)' = A' · B'
- “气泡” (bubble) 代表反相(非)操作。
- 一个 与非门 (NAND) 等价于一个 输入端带反相的或门 (Negative-OR)。
-
推演规则:
- 向后推 (Backward): 将一个门输出端的气泡向后推到下一级门的输入端。这样做的时候,需要改变下一级门的类型(与↔或)。
- 向前推 (Forward): 将一个门所有输入端的气泡向前推,汇集到该门的输出端。这样做的时候,也需要改变门的类型(与↔或)。
-
目的: 通过移动和匹配气泡,使得电路中的气泡能够相互抵消(一个门的输出气泡正好接到下一个门的输入气泡上),从而让电路的逻辑路径(通常是与或或与的结构)变得清晰易读。
示例分析 (PPT第29页):
- 原始电路: 两个与非门 (NAND) 的输出,连接到一个输入端带反相的或非门 (Negative-input NOR) 的输入端。
- 分析最终门: 一个输入端带反相的或非门,根据德摩根定律,等价于一个 与门 (AND)。
(A' + B')' = A · B
。 - 使用气泡推演:
- 将最终门的两个输入气泡向前推,穿过这个门。
- 门类型从“或非”变为“与非”。
- 输入气泡消失,输出端出现一个气泡。这个等效变换本身比较复杂。
- 更简单的方法是直接替换:将最终的“输入反相的或非门”直接替换成它的等效门“与门”。
- 简化后的电路: 两个与非门 (NAND) 的输出直接连接到一个与门 (AND) 的输入端。
- 读取逻辑表达式:
Y = (AB)' · (CD)'
。
第七部分:章节复习
- 基本组合逻辑电路: 学习了与或、与或非、异或、同或逻辑的结构和功能。
- 通用性: 与非门和或非门都是通用门,可以构建任何逻辑函数。
- 对偶符号 (Dual Symbols): 基于德摩根定律,任何门都有一个等效的对偶表示形式(例如,NAND ↔ Negative-OR),这是气泡推演的基础。
第八部分:是非题测验 (附答案与解析)
-
与或逻辑只能有两个双输入与门。
- 错误 (False)。 与或逻辑可以有任意数量的与门,每个与门的输入也可以是任意数量,这取决于需要实现的SOP表达式。
-
AOI是AND-OR-Invert的缩写。
- 正确 (True)。 这是该电路结构的通用缩写。
-
如果一个异或门的输入相同,则输出为低电平(0)。
- 正确 (True)。 异或的定义就是“相同为0,不同为1”。
0⊕0=0
,1⊕1=0
。
- 正确 (True)。 异或的定义就是“相同为0,不同为1”。
-
如果一个同或门的输入不同,则输出为高电平(1)。
- 错误 (False)。 同或的定义是“相同为1,不同为0”。输入不同时,输出应为低电平(0)。
-
奇偶校验码生成器不能用异或门实现。
- 错误 (False)。 奇偶校验生成器恰恰是异或门最经典的应用之一。
-
与非门可以用来实现与门的功能。
- 正确 (True)。 使用两个与非门即可实现一个与门。
-
或非门不能用来实现或门的功能。
- 错误 (False)。 使用两个或非门即可实现一个或门。
-
任何SOP表达式都可以只用与非门来实现。
- 正确 (True)。 因为与、或、非这三种基本运算都可以由与非门实现,所以任何由它们组成的逻辑表达式(如SOP)都可以只用与非门实现。
-
一个与非门的对偶符号是一个输入反相的与门。
- 错误 (False)。 与非门
(AB)'
的对偶符号是输入反相的 或门 (Negative-OR)A' + B'
。
- 错误 (False)。 与非门
-
输入反相的或门等价于与非门。
- 正确 (True)。 这就是德摩根定律
A' + B' = (AB)'
的直接描述。
- 正确 (True)。 这就是德摩根定律