布尔逻辑如何工作

经过:马歇尔大脑

布尔逻辑“width=
布尔逻辑会影响计算机的运行方式。蒙蒂·拉库森 /盖蒂图像

您是否曾经想过计算机如何做到诸如平衡支票簿或下棋,还是拼写检查文档?这些都是几十年前的事情,只有人类才能做。现在,计算机显然可以轻松进行。由硅和电线组成的“芯片”如何做似乎需要人类思想的事情?

如果您想以核心理解这个问题的答案,那么您需要了解的第一件事就是所谓的布尔逻辑。布尔逻辑最初是由乔治·布尔(George Boole)在1800年代中期开发的,允许将很多意外的东西映射到位和字节。布尔逻辑的伟大之处在于,一旦您掌握了事物,布尔逻辑(或至少要了解计算机的操作所需的零件)非常简单。在本文中,我们将首先讨论简单的逻辑“大门”,然后查看如何将它们组合成有用的东西。

广告

简单的大门

不是门“width=
不是门
和门“width=
和门
或门“width=
或门
也不是门“width=
也不是门

您需要学习三个,五或七个简单的大门,具体取决于您要计算它们的方式(您会稍后看到为什么)。使用这些简单的门,您可以构建组合,以实现您可以想象的任何数字组件。这些大门在这里看起来有些干燥,而且非常简单,但是我们将在以下各节中看到一些有趣的组合,这将使它们更具启发性。如果您还没有这样做,请阅读位和字节如何工作在继续前会有所帮助。

不是门

最简单的门称为“逆变器”或一个非门。它需要一点点输入,并以相反的形式产生输出。逻辑表是:

广告

0 1

1 0

没有门有一个称为的输入一种一个输出称为(“ Q”用于输出,因为如果您使用“ O”,则很容易将其与零混淆)。该表显示了门的行为。当您将0应用于A时,Q会产生1。当您将1应用于A时,Q会产生0。简单。

和门

和门对两个输入(A和B:)执行逻辑“和”操作:

a b q

0 0 0

0 1 0

1 0 0

1 1 1

大门背后的想法是:“如果b是1,然后Q为1。“您可以在门的逻辑表中看到该行为。

a b q

0 0 0如果a为0和b为0,则q为0。

0 1 0如果a为0和b是1,则q为0。

1 0 0如果a为1和b是0,则q是0

1 1 1如果A为1和B为1,则Q为1。

或门

下一个门是一个或门。它的基本思想是:“如果一个是1要么b是1(或两者都是1),然后q是1。”

a b q

0 0 0

0 1 1

1 0 1

1 1 1

NAND大门“width=
NAND大门

这些是三个基本门(这是计算它们的一种方法)。认识另外两个人是很普遍的:NAND也不门。这两个门只是一个不带门的AN和或或栅极的组合。如果您包括这两个门,则计数将上升到五个。这是NAND和NOR GATES的基本操作 - 您可以看到它们只是对和 /或门的反转:

也不是门

a b q

0 0 1

0 1 0

1 0 0

1 1 0

NAND大门

a b q

0 0 1

0 1 1

1 0 1

1 1 0

有时添加到列表的最后两个门是XORXNOR大门,也称为“独家或”和“独家”门。这是他们的桌子:

XOR门

a b q

0 0 0

0 1 1

1 0 1

1 1 0

Xnor Gate

a b q

0 0 1

0 1 0

1 0 0

1 1 1

XOR门“width=
XOR门
Xnor Gate“width=
Xnor Gate

Xor门背后的想法是:“如果要么B是1,但是不是两者都是Q。“ XOR可能不包含在门列表中的原因是,您可以使用列出的原始三个门轻松地实现它。

如果您对A和B进行所有四个不同的模式,并通过电路跟踪它们,您会发现Q的行为就像XOR门。由于对Xor门有一个很好的符号,因此通常更容易将XOR视为“标准门”,并以与电路图相同的方式和或使用它。

广告

简单的加法器

在文章中位和字节,你学会了二进制添加。在本节中,您将学习如何使用上一节中描述的门创建能够二进制添加的电路。

让我们从一个单位加法器。假设您有一个项目,需要将单个位添加在一起并获得答案。您开始设计电路的方式是首先查看所有逻辑组合。您可以通过查看以下四个总和来做到这一点:

广告

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 10

直到到达1 + 1之前,这看起来都很好。在这种情况下,您有那个讨厌的携带一点担心。如果您不在乎携带(因为毕竟这是一个1位添加问题),那么您可以看到可以使用XOR门解决此问题。但是,如果您确实在乎,那么您可能会重写方程式以始终包括2位输出, 像这样:

0 + 0 = 00

0 + 1 = 01

1 + 0 = 01

1 + 1 = 10

从这些方程式您可以形成逻辑表:

1位加法器随身携带

A B Q CO

0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1

通过查看此表,您可以看到可以使用XOR Gate和Co(随身携带)和门实现Q。简单的。

如果您想将两个8位字节添加在一起怎么办?这变得更加困难。最简单的解决方案是将问题模块化到可重复使用的组件然后复制组件。在这种情况下,我们只需要创建一个组件:完整的二进制加法器

完整的加法器和我们查看过的先前加法器之间的区别是,完整的加法器接受A和A B输入和A随身携带(CI)输入。一旦我们有一个完整的加法器,我们就可以将其中的八个串在一起,以创建一个字节范围的加法器,然后从一个加法器到另一个加法器级联。

在下一节中,我们将研究如何将完整的加法器实现到电路中。

广告

完整的加法器

完整加法器的逻辑表比我们以前使用过的桌子要复杂得多,因为现在我们有3个输入位。看起来像这样:

一位完整的加法器,带有随身携带和随身携带

CI A B Q CO

0 0 0 0 0

广告

0 0 1 1 0

0 1 0 1 0

0 1 1 0 1

1 0 0 1 0

1 0 1 0 1

1 1 0 0 1

1 1 1 1 1

完整的加法器可以通过多种方式实现。“width=
完整的加法器可以通过多种方式实现。

您可以通过许多不同的方式实现此表。我将在这里提出一种可以易于理解的方法。如果您看Q位,您会发现,对于A和B,前4位的行为就像XOR栅极,而底部4位的表现就像是Xnor Gate相对于A和B。CO的前4位表现得像A和B相对于A和B,而底部的4位表现得像一个或门。采取这些事实,以下电路实现了一个完整的加法器:

这绝对不是实现完整加法器的最有效方法,但是使用此方法,它非常容易理解和通过逻辑进行跟踪。如果您如此倾向,请查看可以用更少的门实现此逻辑的方法。

现在,我们有了一个称为“完整加法器”的功能。然后,计算机工程师的作用是“黑框”,以便他或她可以停止担心组件的细节。一种黑盒子对于一个完整的加法器,看起来像这样:

使用那个黑匣子,现在很容易绘制4位全加法器

在此图中,来自每个位的随身携带将直接进送到下一个位的随身携带中。a 0是在初始接送位上硬连接的。如果您在A和B线上输入两个4位编号,则将在Q线上获得4位总和,并为最终携带的额外添加1位。您可以看到,如果需要,该链可以延伸到8、16或32位。

我们刚刚创建的4位加法器称为涟漪携带加法器。它之所以得到这个名字,是因为随身携带的碎屑从一个加法器到另一个加法器。该实现具有简单性的优势,但速度问题的缺点是。在真实电路中,门需要一些时间来切换状态(时间是纳秒的顺序,但在高速计算机中,纳秒很重要)。因此,由于随身携带的波纹,32位或64位纹波载体加成器可能需要100至200纳秒的成分才能赚取最后的总和。因此,工程师创建了更高级的加法器随身携带加法器。实施随身携带所需的门数很大,但是加法器的安装时间要好得多。

广告

人字拖

使用两个逆变器的最简单反馈电路“width=
使用两个逆变器的最简单反馈电路

您可以用布尔门(Boolean Gates)做的更有趣的事情之一就是创建记忆跟他们。如果您正确安排门,他们会记住一个输入值。这个简单的概念是内存(随机访问存储器)在计算机中,还可以创建各种其他有用的电路。

记忆取决于一个称为的概念回馈。也就是说,门的输出被反馈到输入中。上面显示了使用两个逆变器的最简单反馈电路。

广告

如果您遵循反馈路径,您可以看到,如果Q恰好是1,则始终为1。如果它恰好是0,则始终为0。因为能够控制我们创建的电路,这没有太多用途 - 但是它确实让您了解反馈的工作原理。

事实证明,在“真实”电路中,您实际上可以使用这种简单的逆变器反馈方法。更有用使用两个NAND门的反馈电路如下:

该电路有两个输入(rs)和两个输出(问')。由于有反馈,与我们之前见过的逻辑表相比,其逻辑表有些不寻常:

R S Q Q'

0 0非法

0 1 1 0

1 0 0 1

1 1记忆

逻辑表显示的是:

  • 如果r和s是彼此的对立面,则q遵循s和q'是q的倒数。
  • 如果R和S同时切换为1,则该电路记得先前在R和S上介绍的内容。

还有有趣的非法的状态。在这种状态下,R和S都转到0,在内存意义上没有价值。由于非法状态,您通常会添加一点条件逻辑在输入侧以防止它,一个S在此处显示:

在此电路中,有两个输入(D和E)。你可以想到d作为“数据”和e为“启用”。如果e为1,则q将遵循D。但是,如果e更改为0,则q会记住D。拖鞋

在下一节中,我们将查看J-K触发器。

广告

J-K触发器

触发器的一种非常常见的形式是J-K触发器。从历史上看,“ J-K”的名字来自于历史上不清楚,但通常以这样的黑匣子表示:

在此图中,p代表“预设”,C代表“清除”和clk代表“时钟”。

广告

J-K触发器可用于创建和边缘触发的闩锁,这对于CPU的设计很重要。“width=
J-K触发器可用于创建和边缘触发的闩锁,这对于CPU的设计很重要。

P C CLK J K Q Q'

1 1 1-1-0 1 0 1 0

1 1 1-1-0 0 1 0 1

1 1 1-1-0 1 1切换

1 0 x x x 0 1

0 1 x x x 1 0

这是桌子所说的:首先,预设和清除覆盖J,K和clk。因此,如果预设达到0,则Q为1;如果Clear达到0,那么无论J,K和CLK在做什么,Q都达到0。但是,如果预设和清除均为1,则J,K和CLK可以运行。这1-0符号表示,当时钟从1变为0时,如果它们是对立面,则记住它们的值。在低速边缘时钟(从1到0的过渡),j和k存储。但是,如果J和K恰好在低速边缘处是1,则简单地简单地切换。也就是说,Q从其当前状态变为相反状态。

您现在可能会问自己:“世界上有什么好处?”事实证明,“边缘触发”的概念非常有用。J-K Flip-Flop仅“锁定”从1到0的过渡中“锁定” J-K输入的事实使其作为存储设备更有用。J-K触发器也非常有用柜台(当创建数字时钟)。这是一个示例使用J-K触发器的4位计数器

该电路的输出为A,B,C和D,它们代表4位二进制数。左右触发器的时钟输入进入时钟输入,信号从1到0,然后反复地更改为1(一个振荡信号)。计数器将计算其在此信号中看到的低流量边缘。也就是说,每当传入信号从1变为0时,由A,B,C和D表示的4位数量将增加1。因此计数将从0到15,然后循环回到0。您可以在此计数器上添加尽可能多的位,并计算您喜欢的任何东西。例如,如果您将磁开关放在门上,则计数器将计算门打开和关闭的次数。如果您在道路上放置光传感器,则计数器可以计算驾驶的汽车数量。

J-K触发器的另一个用途是创建一个边缘触发的闩锁,如下所示。

在这种布置中,当时钟边缘从低到高时,D上的值被“锁定”。闩锁在设计之类的事物中非常重要中央处理单元(CPU)和计算机中的外围设备。

广告

实施门

在前面的部分中,我们看到,通过使用非常简单的布尔门,我们可以实现加法器,计数器,闩锁等。这是一个巨大的成就,因为不久前人类是唯一可以做诸如将两个数字添加在一起的事情的人。有了一点工作,设计实现减法,乘法,除法的布尔电路并不难...您可以看到我们离袖珍计算器并不遥远。从那里,它不太遥远CPU用于计算机。

那么,我们如何在现实生活中实施这些大门呢?布尔先生在纸上提出了他们的看法,在纸上它们看起来很棒。但是,要使用它们,我们需要在物理现实中实现它们,以便大门可以积极执行其逻辑。一旦我们实现这一目标,我们就开始沿着创建真实计算设备的道路。

广告

理解布尔逻辑的物理实施的最简单方法是使用继电器。实际上,这是如何实施第一台计算机的。没有人会再使用继电器来实现计算机 - 今天,人们使用蚀刻在硅芯片上的亚微观晶体管。这些晶体管非常小而快速,与继电器相比,它们消耗的功率很小。但是,继电器非常容易理解,它们可以非常简单地实现布尔逻辑。由于这种简单性,您将能够看到从“纸上的大门”到“在物理现实中实现的主动门”的映射是可能的,而且是直接的。用晶体管执行相同的映射也很容易。

让我们从逆变器开始。使用继电器实现不栅极很容易:我们要做的就是使用电压代表位状态。我们将二进制1定义为6伏,二进制0为零伏(地面)。然后我们将使用6伏电池为我们的电路供电。因此,我们的不登机将看起来像这样:

[如果这个数字对您没有意义,请阅读继电器如何工作用于解释。]

您可以在此电路中看到,如果将零伏涂在A上,则在Q上获得6伏;而且,如果您向A涂6伏,则在Q上获得零电压。实现带有继电器的逆变器非常容易!

同样容易实现两个继电器:

在这里,您可以看到,如果您将6伏伏特(Q)施加6伏,Q将有6伏。否则,Q的电压为零。这正是我们想要的行为。一个或门更简单 - 只需将A和B的两条线钩上两个线即可创建OR。如果您愿意并并行使用两个继电器,您可能会变得比这更典型。

您可以从讨论中看到,您可以从继电器中创建三个基本门,而不是和或 - 和或 - 和或 - 。然后,您可以使用上面显示的逻辑图将这些物理门钩在一起,以创建一个物理8位纹波式加法器。如果您使用简单的开关将A和B输入应用于加法器,并将所有八条Q线钩在灯泡上,您将能够将任何两个数字添加在一起,并在灯光上读取结果(“ light on of” = 1,“ = 1,”点亮“ = 0)。

简单大门形式的布尔逻辑非常简单。从简单的门中,您可以创建更复杂的功能,例如添加。物理实施门是可能且容易的。从这三个事实来看,您拥有数字革命的核心,并且您可以理解计算机的工作方式。

广告

特色

广告

加载...