第六章 逻辑门 — 数字逻辑基础
导读
如果说上一章中的继电器让我们看到了逻辑运算的物理实现,那么本章我们将进入一个更加纯粹的世界——数字逻辑(Digital Logic)的世界。在这里,我们不再关心逻辑门是用继电器、晶体管还是其他什么元件实现的,我们只关心它们的逻辑行为:给定输入,输出是什么?
数字逻辑是现代计算机科学的数学基础。计算机所做的一切——无论是运行操作系统、浏览网页、播放视频还是进行科学计算——归根结底都是逻辑门对二进制信号的处理。一个现代CPU中有数十亿个逻辑门,它们以极高的速度协同工作,执行着各种逻辑运算。
本章将系统地介绍数字逻辑的基础知识。我们将从基本的逻辑门(AND、OR、NOT)开始,学习它们的符号、真值表和逻辑表达式;然后探讨复合逻辑门(NAND、NOR、XOR);接着深入布尔代数的基本定理和化简方法;最后学习如何用逻辑门构建组合逻辑电路。通过本章的学习,你将掌握数字逻辑的核心工具,为后续学习加法器、触发器、CPU等更复杂的数字系统打下坚实的基础。
核心概念详解
6.1 逻辑门的基本概念
逻辑门(Logic Gate)是实现基本逻辑运算的电子电路。它有若干个输入端和一个输出端,输出端的信号状态由输入端的信号状态和门本身的逻辑功能决定。
在数字电路中,信号只有两种状态:高电平(High, H)和低电平(Low, L),分别对应逻辑值1(真, True)和0(假, False)。这种只有两种状态的信号系统称为二进制逻辑或二值逻辑。
逻辑门的行为可以用三种等价的方式来描述:
真值表(Truth Table):列出所有可能的输入组合及对应的输出值
逻辑表达式(Boolean Expression):用布尔代数的符号表示输入与输出的关系
逻辑符号(Logic Symbol):用标准化的图形符号表示逻辑门
6.2 基本逻辑门
AND门(与门)
AND门实现逻辑"与"运算。只有当所有输入都为1时,输出才为1。
2输入AND门真值表:
| A | B | Y = A·B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
逻辑表达式:Y = A · B(或 Y = A AND B)
AND门可以扩展到多个输入。3输入AND门:Y = A · B · C,只有A、B、C都为1时Y才为1。
AND门的一个重要特性:它可以用作"使能"控制。如果一个输入端用作控制信号,另一个用作数据信号,那么当控制信号为1时,数据信号可以通过;当控制信号为0时,输出始终为0,数据被"禁止"。
OR门(或门)
OR门实现逻辑"或"运算。只要有一个输入为1,输出就为1。
2输入OR门真值表:
| A | B | Y = A+B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
逻辑表达式:Y = A + B(或 Y = A OR B)
注意:这里的"+"表示逻辑或,不是算术加法。在逻辑或中,1 + 1 = 1(而不是2)。
OR门也可以用作"选择"控制:如果多个信号通过OR门合并,只要有一个信号为1,输出就为1。
NOT门(非门/反相器)
NOT门实现逻辑"非"运算。输出与输入相反。
NOT门真值表:
| A | Y = Ā |
|---|---|
| 0 | 1 |
| 1 | 0 |
逻辑表达式:Y = Ā(或 Y = NOT A)
NOT门只有一个输入和一个输出,它是最简单的逻辑门,但也是最重要的——它提供了逻辑"反转"的能力,是构建所有逻辑功能的基础之一。
6.3 复合逻辑门
NAND门(与非门)
NAND门是AND门后面接一个NOT门。它的输出是AND门输出的反。
2输入NAND门真值表:
| A | B | Y = (A·B)' |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
NAND门有一个极其重要的特性:它是通用门(Universal Gate)。仅用NAND门就可以实现AND、OR、NOT以及任何其他逻辑功能。
证明:
- NOT A = A NAND A(将两个输入连在一起)
- A AND B = NOT(A NAND B) = (A NAND B) NAND (A NAND B)
- A OR B = (NOT A) NAND (NOT B) = (A NAND A) NAND (B NAND B)
这个特性在工程上意义重大:制造商可以只生产一种类型的逻辑门(NAND),然后用它构建任何需要的逻辑功能。这简化了生产工艺,降低了成本。实际上,许多集成电路内部就是全部由NAND门构成的。
NOR门(或非门)
NOR门是OR门后面接一个NOT门。
2输入NOR门真值表:
| A | B | Y = (A+B)' |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 0 |
NOR门同样是通用门。仅用NOR门也可以实现所有逻辑功能。
XOR门(异或门)
XOR门实现"异或"运算。当且仅当两个输入不同时,输出为1。
2输入XOR门真值表:
| A | B | Y = A⊕B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
逻辑表达式:Y = A ⊕ B = A·B' + A'·B
XOR门在数字电路中有多种重要应用:
- 加法器:XOR是半加器的核心(和 = A XOR B,进位 = A AND B)
- 奇偶校验:多个输入的XOR可以用于检测数据的奇偶性
- 数据比较:XOR的输出为0表示两个输入相同
- 加密:XOR操作在简单加密算法中广泛使用
6.4 布尔代数的基本定理
布尔代数(Boolean Algebra)是由英国数学家乔治·布尔(George Boole)在1854年创立的数学分支。它是分析和设计逻辑电路的数学工具。
布尔代数的基本变量只能取值0或1,基本运算包括AND(·)、OR(+)和NOT('或上划线)。
基本定律
同一律(Identity Laws):
- A + 0 = A
- A · 1 = A
零律(Null Laws):
- A + 1 = 1
- A · 0 = 0
互补律(Complement Laws):
- A + A' = 1
- A · A' = 0
幂等律(Idempotent Laws):
- A + A = A
- A · A = A
双重否定律(Double Negation):
- (A')' = A
交换律、结合律、分配律
交换律(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 Laws):
- A · (B + C) = A · B + A · C
- A + (B · C) = (A + B) · (A + C)
注意第二个分配律在普通代数中不成立,但在布尔代数中成立。
德摩根定律(De Morgan's Theorems)
德摩根定律是布尔代数中最重要的定理之一:
- (A · B)' = A' + B'(AND的否定等于各部分否定后的OR)
- (A + B)' = A' · B'(OR的否定等于各部分否定后的AND)
德摩根定律的直观理解:"不是(A和B)"等价于"不是A或者不是B";"不是(A或B)"等价于"不是A并且不是B"。
德摩根定律在逻辑电路设计中非常重要,它允许我们在AND和OR之间进行转换,从而优化电路设计。例如,如果只有NAND门可用,可以用德摩根定律将OR运算转换为NAND运算。
6.5 逻辑表达式的化简
在实际的数字电路设计中,我们通常先根据需求写出逻辑表达式,然后对其进行化简,以使用最少的逻辑门来实现。化简后的电路不仅成本更低,而且速度更快、功耗更小。
代数化简法
利用布尔代数的定律和定理,通过代数运算来化简逻辑表达式。
常用化简技巧:
- 吸收律:A + A·B = A(A"吸收"了A·B)
- 冗余律:A + A'·B = A + B
- 合并律:A·B + A·B' = A(B和B'互补,合并后消去)
示例: 化简 Y = A·B + A·B' + B·C
Y = A·(B + B') + B·C (分配律)
= A·1 + B·C (互补律)
= A + B·C (同一律)
化简前需要3个AND门和1个OR门,化简后只需要1个AND门和1个OR门。
卡诺图化简法(Karnaugh Map)
卡诺图是一种图形化的逻辑化简方法,特别适用于变量较少(2-6个)的情况。
卡诺图的基本原理:
将真值表中的每一行对应卡诺图中的一个方格,方格的排列方式使得相邻方格之间只有一个变量不同(格雷码排列)。通过将相邻的1方格圈成矩形组(大小为2的幂次),可以直接读出化简后的表达式。
2变量卡诺图:
B
0 1
A 0 | m0 | m1 |
1 | m2 | m3 |3变量卡诺图:
BC
00 01 11 10
A 0 | m0 | m1 | m3 | m2 |
1 | m4 | m5 | m7 | m6 |化简步骤:
将函数值为1的最小项在卡诺图中标记为1
将相邻的1圈成尽可能大的矩形组(大小为1、2、4、8...)
每个矩形组对应一个乘积项
所有乘积项之和就是化简后的表达式
6.6 组合逻辑电路
组合逻辑电路(Combinational Logic Circuit)是指输出仅取决于当前输入的逻辑电路,不包含记忆元件。这是最简单的一类数字电路。
组合逻辑电路的设计步骤:
明确需求:确定输入和输出的数量及含义
列出真值表:列出所有输入组合及对应的期望输出
写出逻辑表达式:从真值表中提取输出为1的条件
化简表达式:使用代数法或卡诺图化简
画出逻辑图:用逻辑门符号实现化简后的表达式
常见组合逻辑电路
多路选择器(Multiplexer, MUX):从多个输入中选择一个输出。一个2ⁿ输入的多路选择器有n个选择控制端。
2选1多路选择器:
- 输入:A、B、选择端S
- 输出:Y = S'·A + S·B
- 当S=0时,Y=A;当S=1时,Y=B
译码器(Decoder):将n位二进制编码转换为2ⁿ个输出中的一个。
2-4译码器:
- 输入:A₁、A₀(2位二进制数)
- 输出:Y₀、Y₁、Y₂、Y₃
- Y₀ = A₁'·A₀'(输入00时Y₀=1)
- Y₁ = A₁'·A₀(输入01时Y₁=1)
- Y₂ = A₁·A₀'(输入10时Y₂=1)
- Y₃ = A₁·A₀(输入11时Y₃=1)
编码器(Encoder):译码器的逆操作,将2ⁿ个输入中的一个有效信号转换为n位二进制编码。
比较器(Comparator):比较两个二进制数的大小。
1位比较器:
- 输入:A、B
- 输出:A>B、A=B、A<B
- A>B = A·B'
- A=B = A·B + A'·B' = A⊙B(同或)
- A<B = A'·B
6.7 从真值表到电路:设计实例
让我们通过一个完整的实例来演示组合逻辑电路的设计过程。
需求:设计一个"多数表决器"。三个评委A、B、C各有一个按钮,按下为1,不按为0。当多数评委按下按钮时(至少2个),输出Y为1(通过),否则为0(不通过)。
步骤1:列出真值表
| A | B | C | Y |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 |
步骤2:写出逻辑表达式
Y = A'BC + AB'C + ABC' + ABC
步骤3:化简
使用卡诺图或代数法化简:
Y = A'BC + AB'C + ABC' + ABC
= A'BC + AB'C + AB(C' + C)
= A'BC + AB'C + AB
= BC(A' + A) + AB'C + AB - 重新整理
= AB + BC + AC
化简后的表达式只需要3个AND门和1个3输入OR门。
步骤4:画出逻辑图
三个AND门分别计算AB、BC、AC,然后送入一个OR门得到最终输出Y。
6.8 逻辑门的电气特性
虽然我们在逻辑层面使用0和1,但在物理层面,逻辑门处理的是电压信号。理解逻辑门的电气特性对于设计可靠的数字系统至关重要。
逻辑电平:
- VOH(Output High Voltage):输出高电平时的最小电压
- VOL(Output Low Voltage):输出低电平时的最大电压
- VIH(Input High Voltage):被识别为高电平的最小输入电压
- VIL(Input Low Voltage):被识别为低电平的最大输入电压
噪声容限(Noise Margin):
- 高电平噪声容限:NMH = VOH - VIH
- 低电平噪声容限:NML = VIL - VOL
噪声容限表示信号可以承受多大的噪声干扰而不被误判。噪声容限越大,电路的抗干扰能力越强。
扇出(Fan-out):一个逻辑门的输出可以驱动的同类门的最大数量。扇出受限于门的电流驱动能力。
传播延迟(Propagation Delay):输入信号变化到输出信号相应变化之间的时间差。传播延迟决定了电路的最大工作速度。
重要知识点
知识点一:三种基本逻辑门
AND、OR、NOT是三种基本逻辑门,所有其他逻辑功能都可以由它们组合实现。
知识点二:NAND和NOR是通用门
仅用NAND门或仅用NOR门就可以实现任何逻辑功能。这一特性在集成电路制造中具有重要的工程意义。
知识点三:布尔代数是逻辑设计的数学工具
布尔代数的定律和定理(特别是德摩根定律)是分析和化简逻辑电路的基础。
知识点四:卡诺图是实用的化简工具
对于变量较少的逻辑函数,卡诺图提供了一种直观、系统的化简方法。
知识点五:组合逻辑电路的输出仅取决于当前输入
组合逻辑电路不包含记忆功能,输出完全由当前输入决定。需要记忆功能时,必须使用时序逻辑电路。
常见误区
误区一:"OR就是加法"
逻辑OR和算术加法是不同的运算。在OR中,1 + 1 = 1;在算术中,1 + 1 = 2。虽然它们的符号都是"+",但含义完全不同。
误区二:"逻辑表达式越短,电路一定越好"
表达式的长度不是衡量电路优劣的唯一标准。有时一个稍长的表达式可以用更少的门级数(层次)实现,从而获得更快的速度。电路优化需要综合考虑面积、速度、功耗等多个因素。
误区三:"所有逻辑门都是相同的"
不同类型的逻辑门有不同的电气特性(速度、功耗、驱动能力等)。在實際设计中,需要根据具体需求选择合适的门类型。
误区四:"化简只是为了减少门的数量"
化简的目标不仅是减少门的数量,还包括减少门的输入端数、减少电路的层次数、消除冒险和竞争等。不同的化简目标可能导致不同的化简结果。
实践应用
应用一:设计一个密码锁控制电路
一个密码锁有4个按钮A、B、C、D。密码是A和C同时按下,或者B和D同时按下。设计控制电路:
列出真值表
写出逻辑表达式
用卡诺图化简
画出逻辑图
应用二:验证德摩根定律
使用真值表验证以下两个德摩根定律:
- (A · B)' = A' + B'
- (A + B)' = A' · B'
应用三:设计一个2位二进制数比较器
比较两个2位二进制数X(X₁X₀)和Y(Y₁Y₀),输出三个信号:X>Y、X=Y、X<Y。
应用四:用NAND门实现其他逻辑门
证明并验证:
用NAND门实现NOT门
用NAND门实现AND门
用NAND门实现OR门
本章小结
本章系统地介绍了数字逻辑的基础知识:
基本逻辑门:AND、OR、NOT是三种基本逻辑门,它们的组合可以实现任何逻辑功能。
复合逻辑门:NAND、NOR是通用门,XOR在加法器和比较器中有重要应用。
布尔代数:提供了分析和化简逻辑电路的数学工具,德摩根定律是其中最重要的定理。
逻辑化简:代数法和卡诺图法是两种主要的化简方法,化简可以降低电路成本和复杂度。
组合逻辑电路:输出仅取决于当前输入,设计步骤为需求→真值表→表达式→化简→逻辑图。
电气特性:逻辑电平、噪声容限、扇出和传播延迟是数字电路设计中需要考虑的实际因素。
掌握了逻辑门和组合逻辑电路的知识后,我们已经具备了构建基本计算电路的能力。在下一章中,我们将学习如何用逻辑门构建二进制加法器——计算机执行算术运算的基础。