Jiahonzheng's Blog

简单电路实践

字数统计: 2.1k阅读时长: 7 min
2017/11/19 Share

当今世界,集成电路无处不在,电脑、手机和其他电子设备成为现代社会不可缺少的一部分。很多学者认为集成电路带来的数字革命是人类历史中最重要的事件。

而在集成电路中,门(Gate)是基本功能元件,而由多个门元件组成的电路(Circuit)进而能够实现多种复杂的功能。各种门电路的组合,形成一套复杂的逻辑运算体系,进而实现了软件与硬件之间的映射关系,即使得我们的软件逻辑以门电路逻辑运算的形式在硬件上开展。

本篇博文,只是一篇简单的电路科普文章,欲了解更多相关知识的观客,可以点击 此处 跳转到维基百科了解更为专业、深入的门电路知识。

晶体管

正如我们上面提到的,门是集成电路的基本功能元件,许多复杂功能的实现离不开门电路,那么门电路是怎么构造出来的呢?

答案是 晶体管 !我们可以通过以不同的方式对若干晶体管进行组合,从而构建成不同功能的门电路,这是一件很神奇的事情。

至于“晶体管是什么”,我们可以从 《Computer Science Illuminated》 得到一些有用的信息:

Transistor is a device that acts, depending on the voltage level of an input signal, either as a wire that conducts electricity or as a resistor that blocks the flow of electricity.

正如以上语句所阐述的,晶体管是一个半导体元件,根据不同的输入的电压表现不同的物理特性,在高电压时表现为导体,在低电压时表现为绝缘体。

网络不给力哦

一个晶体管拥有三个引脚,分别为 Emmiter 、 Base 、 Collector ,其中 Emitter 与 Ground Wire 相连, Base 与 Colector 的差别是 Base 中的电流比 Collector 中的电流小。对晶体管可以这样形象地理解:

通过 Base 中的小电流控制 Collector 中的大电流。

晶体管是一种根据输入电压的高低,从而改变自己的物理特性的电子元件。为了更好地理解晶体管的特性,我们根据上述示意图,运用表格阐述晶体管在不同输入电压下的表现情况。

Base Output
1 0
0 1

观察上述表格,我们发现晶体管的输入端(Base)和输出端(Output)电平值始终相反,这完全符合 非门 的功能特点。这样,我们可以“毫不费力”地搭建了一个重要的门元件—非门。当然我们也可以通过不同的方式将若干个晶体管组合在一起,进而构建出具有不同功能的门电路。

通过串联两三极管,我们可以构建出与非门

网络不给力哦

通过并联两三极管,我们可以构建出或非门

网络不给力哦

非门电路演示

非门(NOT gate),是一个能将输入信号反转的门电路,具有一个输入端和一个输出端,当输入端为高电平(1)时,则输出端电平为低电平(0)。为了让电平高低参数能够可视化,我们在电路演示中,使用 LED 灯泡来间接表示电平高低情况,灯泡正常工作,即为高电平。我们通过 LED 灯泡与开关的组合来控制并显示输入信号的电平高低状况。

网络不给力哦

通过测试不同的输入信号,我们得到了以下的演示结果。

INPUT(toggle switch) OUTPUT(LED)
ON(1) OFF(0)
OFF(0) Red(1)

除了使用晶体管,我们还可使用异或门实现非门电路。

网络不给力哦

验证电路等价: A(B + C) = AB + AC

通过验证电路等价,来验证逻辑代数恒等式,是一种较为直观的方法。在本示例中,我们通过等价电路的验证,探讨逻辑恒等式 A(B + C) = AB + AC 的正确性。

首先,我们得先分析一下 A(B + C) = AB + AC 的含义,从而设计出相应的电路进行验证。

A(B + C) 部分是对 B 和 C 先取并,然后将结果与 A 取交。我们以电路形式展现上述表达式,可以下图所示的电路形式:

AB + AC 部分是对 A 和 B 取交后的结果,与 C 和 D 取交后的结果取并集操作。同理,我们可以得到这样的电路形式:

Circuits.io 模拟上述两种电路,并验证:

网络不给力哦

我们发现,在 A 、 B、 C 的各种输入状态值下,两部分电路的情况总是一样。由此,我们即可验证上述逻辑恒等式的正确性。

$A$ $B$ $C$ $A(B + C)$ $AB + AC$
0 0 0 0 0
1 0 0 0 0
1 1 0 1 1
1 0 1 1 1
0 1 0 0 0
1 1 0 1 1
0 1 1 0 0
1 1 1 1 1

在上述演示过程中,我们发现实现 A(B + C) 的电路比实现 AB + AC 的电路使用更少的器件。这里,我们可以不加证明地提出这样的理论:

逻辑恒等式能过帮助我们简化电路的实现,实现用更少的器件完成更多的功能

SR 锁存器演示

锁存器(latch),是数位电路中非同步时序逻辑电路系统中用来存储的一种电子电路,一个锁存器可以存储一位的数据。

这里,我们演示一种简单 set-reset 类型的锁存器,通过使用 NAND 实现,原理可参照以下逻辑图。

网络不给力哦

注意,在该 logic diagram 中,我们使用了 $\overline{S}$ 和 $\overline{R}$ 作为输入量。

参照示意图,我们在线上搭建了简单的一位锁存器。

网络不给力哦

下面是演示中锁存器真值表(按先后顺序排序):

$\overline{S}$ $\overline{R}$ $Q$ $\overline{Q}$
1 1 0 1
0 1 1 0
1 1 1 0
1 0 0 1
1 1 0 1

全加电路

加法器(Adder)是一种用于执行加法运算的数字电路部件,是构成 CPU 的算术逻辑单元(ALU)的基础。在 CPU 中,加法器主要负责计算地址、索引数据等。除此之外,加法器也是二进制乘法器的重要组成部分。由于数字电路通常以二进制为基础,因此二进制加法器在实际应用中最为普遍。

半加器

半加器的功能是将两个一位的二进制数相加,具有两个输入(两个加数 $A$ 和 $B$),以及两个输出(和$Sum$、进位$Carry$)。根据两个一位二进制数相加的结果,可以通过真值表得到简易的半加器设计。在示意图中,使用了 异或门 产生 和$S$ ,使用 与门 产生 进位$C$ 。

A B C S
0 0 0 0
1 0 0 1
0 1 0 1
1 1 1 0

网络不给力哦

全加器

全加器将两个一位二进制数相加,并根据接收到的低位进位信号,输出和、进位输出。

  • 全加器的三个输入信号为两个加数 $A$ 、$B$ 和低位进位$C_{in}$。
  • 全加器的两个输出信号分别为本位的和$S$、向高位的进位$C_{out}$。

网络不给力哦

上图为一位全加器示意图,从图可以看出,我们使用了两个半加器和一个与门实现了一个全加器。

线上演示一位全加器:

网络不给力哦

网络不给力哦

通过测试不同的输入信号,我们得到了以下演示结果。

$A$ $B$ $C_{in}$ $C_{out}$ $S$
0 0 0 0 0
1 0 0 0 1
0 1 0 0 1
1 1 0 1 0
0 0 1 0 1
1 0 1 1 0
0 1 1 1 0
1 1 1 1 1

线上演示二位全加器:

网络不给力哦

网络不给力哦

由于篇幅的限制,这里没有列出二位全加器的演示结果,有兴趣的观客可以自行尝试。不便之处,敬请谅解。

总结

通过在 Circuits.io 演示各种简单电路,能够让我们对后面的数字电路基础课程有了个初步的了解。同时,在实践过程中,需要我们运用逻辑代数的知识。因此,在后续学习中,我们也要重视逻辑代数知识的学习与积累。

CATALOG
  1. 1. 晶体管
  2. 2. 非门电路演示
  3. 3. 验证电路等价: A(B + C) = AB + AC
  4. 4. SR 锁存器演示
  5. 5. 全加电路
    1. 5.1. 半加器
    2. 5.2. 全加器
  6. 6. 总结