A-level计算机科学学习记录:逻辑电路基础(逻辑门)
A-level计算机科学学习记录:逻辑电路基础(逻辑门)
逻辑门是计算机硬件的基础,它们通过处理二进制信号来实现各种计算功能。本文将详细介绍基本逻辑门(AND、OR、NOT、XOR)以及更复杂的逻辑电路(NAND门、半加器、全加器和D锁存器),帮助读者理解计算机硬件的工作原理。
引言
逻辑门是计算机硬件的基础,它们通过处理二进制信号来实现各种计算功能。一个逻辑门可以有多个输入,但只有一个输出。在布尔电路中,当我们说"给出一个值"时,这意味着逻辑门产生了一个TRUE值。逻辑真(True)和逻辑假(False)在物理上分别由高电压和低电压表示。因此,"给出一个值"意味着"高电压"。
在本文中,我们将使用1s/0s、高/低电压和给出值/不给出值等术语来描述逻辑门的状态。我们还将使用Logic.ly网站来展示逻辑门的示例。
基本逻辑门
AND门
AND门只有在所有输入都为真时才产生输出。也就是说,只有当输入为(1, 1)时,它才会输出1。例如,你说:"我拥有一座豪华别墅并且我每年赚10万英镑。"只有当这两个条件都满足时,你的陈述才是真的。
OR门
OR门在至少有一个输入为真时产生输出。这意味着输入组合(0,1)、(1,0)和(1,1)都可以产生一个真值。例如,你对仙女说:"我想要高薪或大房子。"她只需要实现你的其中一个愿望。
NOT门
NOT门是一个一元操作,是最简单的逻辑门。无论输入什么值,它都会返回相反的输出。例如,如果你输入0,它会输出1。
XOR门
XOR门表示"异或",当且仅当一个输入为真时产生输出。它可以由其他逻辑门的组合来实现。
上述组合逻辑门模拟了XOR门的功能。有些人可能会觉得这相当复杂。稍后我们将探讨这些电路是如何设计的。
真值表
真值表是一个表格,列出了所有可能的输入组合及其在基本/组合逻辑门规则下的输出。
AND门的真值表
OR门的真值表
NOT门的真值表
XOR门的真值表
真值表通常用于构建逻辑门。如何使用?输入和预期输出的所有可能值都被输入。我们需要找到使输出为真的输入行。例如,在XOR门的真值表中,我们可以看到当输入A为0且B为1,或当输入A为1且B为0时,输出为真。
在两个有效的输入组合中,我们需要识别值为0的输入并使用NOT门将其反转,然后使用AND门连接两个输入。例如,在XOR门真值表的第二行中,输入A为0而输入B为1,那么我们执行:!A*B;同样,对于最后一行,我们有A*!B。
两个可能的输入组合都返回1的输出,因此我们使用OR门将它们连接起来——然后我们得到XOR门的表达式:!AB+A!B。
然而,通常这不是最后一步。一些更复杂的布尔表达式可以通过某些技术进行简化。这确保了我们能够使用尽可能少的门来实现相同的功能,以降低成本。
布尔代数
A AND B表示为AB,或A*∧**B,A&B,这是逻辑乘法,这在集合运算中是有意义的...
A OR B表示为A+B,A∨B,A|B,这是逻辑加法
NOT A通常表示为¬A,Ā,'A,!A
A XOR B表示为A**⊕B,A⊻**B,A^B
布尔运算也有一些算术规则:
通用规则
A0=0,A1=A,AA=A,A~A=0
A+1=1,A+0=A,A+A=A,A+~A=1
AB=BA,A+B=B+A(交换律)
A+B+C=A+(B+C),ABC=A*(B*C)(结合律)
A*(B+C)=AB+A+C,A+(BC)=(A+B)*(A+C)(分配律)
A+(AB)=A,A(A+B)=A(吸收律)(证明:尝试(A1)+(AB),第二个方程可以转换为第一个)
(A*B)=A+B,(A+B)=A*B(德摩根定律)(可以通过文氏图证明)
A=~~A(双重否定)
如果你想证明其中一些规则,可以使用强大的互联网资源。
NAND门
为什么我们有时使用逻辑门的组合来表示另一个基本逻辑门?
大规模生产一个电路比少量生产所有电路成本更低。因此,使用一个电路来表示其他电路是明智的。然而,在某些情况下,使用逻辑电路的组合来表示一个电路是低效的,会变得过于复杂。
NAND门是AND门后面跟着一个NOT门。据说NAND门可以表示所有基本电路。
使用NAND门表示所有基本门。我们如何证明它们有意义?使用布尔代数来证明它。别担心,这很简单!
XOR
这个纯粹是从布尔表达式中获得的,通过真值表。
注意,这个实现比之前的实现少了一个门!这可以通过布尔代数证明。我们首先查看上面的门并使用所有可能的输入组合和对应的输出来获得一个真值表,从中我们可以得到一个布尔表达式。然后,它被简化并变成!AB+A!B。
NOT
AND
你能为其绘制一个真值表吗?
OR
要证明这一点,我们使用德摩根定律:!A*!B=!(A+B)
然后:!(!A*!B)=!(!(A+B))
然后:!(!A*!B)=A+B(双重否定)
有用的电路
半加器和全加器
全加器是使计算机能够物理计算二进制数的组合逻辑门。
半加器
半加器是全加器的简化版本。这是一个将一个二进制位与另一个二进制位相加的机器。它是如何进行加法的?
假设你们所有人都学过二进制算术。
二进制加法,一位
这是一个真值表,它列出了所有可能的输入组合及其预期输出。
现在我们制作一个布尔表达式,将A的位和B的位与输出相关联:A*!B + !AB->Sum,AB->Carry out。第一个表达式可以简化为A**⊕**B。因此,我们根据这些表达式制作逻辑门!
全加器
如果我们想计算多位数怎么办?例如10+11(二进制)?那么我们需要考虑进位。
上述真值表显示了三个输入的所有有用组合及其相应的输出。我们根据这些组合制作布尔表达式并像往常一样简化它们。将"进位"标记为C。对于Sum,我们有:!C*!AB+!CA*!B+C*!A*!B+CAB。对于进位输出,我们有:!CAB+C*!AB+CA*!B+CAB
这太复杂了——任何采用这种表达式的工厂都会立即破产。即使没有破产,消费者也会受到影响——打开一个网页可能需要几分钟,游戏设计由于其低计算性能而变得不切实际。
因此,我们需要简化上述布尔表达式!
这是一个一位全加器。通常,我们会使用更大的全加器,具有多个字节。这是一个8位全加器(一个字节)
D锁存器
J锁存器
这个D锁存器的目的是在没有电流(输入)时存储数据
如果你输入一个输入,它会给出一个输出,即使输入关闭也会保持不变
D锁存器(A-level版本)
寄存器临时存储数据,并根据时钟速度定期释放数据。因此,我们需要在这个模型中添加一个时钟,使其输出的变化响应于输入和时钟。据说这是一个D锁存器的简化版本。