在消失了两个多月后,计算机那点事儿系列继续更新。
有自己组装过电脑的同学,肯定都听过计算机中有一个硬件叫做内存条,内存条的主要功能是为CPU提供临时的数据存储能力,在CPU进行高速运算中,临时存储数据。我们的手机、或者电脑运行时,一些需要高速访问的数据(比如操作系统、正在运行的应用)都会被加载到内存条中。内存条还有一个特性是,掉电不存储。为了了解内存条中的颗粒是如何保存数据,我们本节需要先了解一个叫做触发器trigger的硬件。
触发器(英語:Flip-flop, FF),是一种具有两种稳态的用于储存的元件,可記錄二进制数字信号「1」和「0」。
蜂鸣器
前面我们讲的加法器、减法器都离我们生活比较远,我们本节在介绍触发器之前,先介绍一个我们的计算机上边常见的一个设备——蜂鸣器buzzer。
我们将继电器、电池、开关按照如下形式进行连接,就可以模拟出一个蜂鸣器出来。
上边这个电路我们无法在Proteus中直接模拟出来。如果大家感兴趣,可以去B站看这个电铃实验。因此,我们借助dcaclab这个web实验室,搭建了一个实物模拟蜂鸣器的电路。,
当电源断开时,常闭的继电器在常闭触点。
当我们打开开关,可以看到发生如下过程:
- 电流从开关流入继电器,继电器产生磁性;
- 在继电器闭合后,开关断开,导致电路开路;
- 电路开路后,继电器又回到了常闭触电;
- 当继电器回到常闭触电后,电路又形成了回路,重复1-3的过程;
我们会看到如下情形:
整个过程来看:开关一旦闭合,金属簧片就会上下跳动—电路也会随之连通或断开—声音也会随之发出。如果这个速度足够快,金属簧片会发出刺耳的声音,这就是蜂鸣器的基本雏形。
我们将弹簧簧片的开关和闭合看作是一个输出信号的0和1,以水平座标作为时间,垂直坐标作为输出0还是1,它的输出大概是这个样子:
这幅图表示随着时间的推移,振荡器的输出在0和1之间按照固有的规律交替变化,正因为这一点,振荡器又经常被称为时钟(clock)。
触发器
首先,我们回忆一下,或非门的真值表:
NOR | 开关B的输入0 | 开关B的输入1 |
---|---|---|
开关A的输入0 | 1 | 0 |
开关A的输入1 | 0 | 0 |
这里我们看一下采用特殊方式连接的一对或非门。
在这个电路中:
- 左边的或非门的输出是右边或非门的输入;
- 右边的或非门的输出又反馈到左边或非门的输入(反馈);
我们在Proteus中,通过两个逻辑状态作为输入,来观察不同输入时,LED灯的状态:
运行仿真软件,当输入都为0时,LED亮起;
上边输入1或者0,下边输入0:
- 上边输入为1时,LED打开;
- 上边输入为0时,LED打开;
上边输入0,下边输入1或者0:
- 下边输入为1时,LED灭;
- 下边再输入为0时,LED灭;
到这里,我们需要总结一下:
- 上边输入1,灯泡亮,改变输入为0,灯依然亮;
- 下边输入1,灯泡灭,改变输入为0,灯泡依然灭;
我们可以看到,同样在两个开关都断开的情况下,灯泡有时亮着,有时却不亮,当两个开关都断开时,电路有两个稳定状态,这类电路统称为触发器(Flip-Flop)。
总结
本节,我们介绍了触发器的一个最基本的形态,触发器是计算机中关于存储的最基本的结构。下一节,我们来详细介绍各种触发器结构。