一个变化循环所需要的时间称之为周期,频率是周期的倒数,如果周期是 0.05 秒,那么频率就是 20,每秒 20 个循环,用赫兹来作其单位,所以就是 20 Hz。
我们再来看下这个电路。
此时灯泡是不亮的。当上面的开关闭合后,左边的或非门输出 0 ,右边的或非门输出是 1,因此灯泡亮了。
神奇的地方来了,此时你断开上面的开关,灯泡依然是亮的,因为左边的或非门输出还是 0,而或非门只要有一个输入是 1,输出就是 0 。
此时如果闭合下面的开关,灯泡就会熄灭,再断开下面的开关灯泡仍旧不亮。
可以看到这个电路是有记忆功能的,你看如果你发现此时的灯泡是亮的,你就能推断上一次闭合的是上面的开关,如果此时灯泡是暗的那么上次闭合的就是下面的开关!
这种电路叫触发器,其实上面的开关就等于置位(set),下面的开关等于复位(Reset),所以这也叫 R-S触发器。
不过更有用的电路应该能记住某个特定时间点的上上一个信号是 0 是 1。
所以还需要搞个保持位,使得保持位关了之后,上下两个开关随意拨动都不影响之前保持结果(下面的图复位和置位位置和我们电路图是相反了,不过没影响一样的)。
其实就是当保持位 0 的时候,复位和置位通过与门的输出肯定是 0 根本影响不到之前的结果。
但是这样就有三位输入了,比较麻烦。从上面的观察来看有意义的输入其实是上面开下面关,或者上面关下面开,所以一定是相反的。所以搞个反向器这样就只有两个输入了。
这个叫电平触发的D型触发器,D表示 Data,数据的输入。电平触发就是当保持位为某一个特定电平时 (例子是 1),触发器就会保存数据端的输入值。
理解了保持位之后,我们需要引入时钟(标志为 clk),一个有规律的来回变化的时钟,当时钟从 1 切换到 0 的时候上一次操作的内容就被保存了,所以把保持位的输入替换成时钟输入。
这样的电路叫做电平触发的D型锁存器,它表示电路锁存住一位数据,并保持到将来使用,它也称之为 1 位存储器。
有了 1 位存储器,那多位存储器就很简单了,就是将多个锁存器合在一起,如下图是八位锁存器。
这里还需要提一下边沿触发器,不同于电平触发器的是边沿触发器是在 0 变成 1 的瞬间记录结果,像电平触发器是在 1 的时候每个结果都会被覆盖性的记住,在某些场景下边沿触发器的瞬时性更合适。
电路图如下,由两级 R-S 触发器链接而成,其实这种电路看不的很乱觉得很复杂没事,知道结果就行了。
简化的画法如下:
然后我们再来看下这个电路:
将振荡器的输出作为时钟的输入,然后反向 Q 端(上图中下面的Q代表反向Q,图少了一横)的输入又作为 D 的输入。
出来的波形图是这样的,可以看到 Q 的输出频率是时钟的一半,所以这种电路称为分频器。
而分频器的输出又可以是下一个分频器的输入,我们再来看下这个图:
出来的波形图是这样的:
再填上 0 和 1:
从 Q3 开始每一列从下往上看,是不是 0000、0001、0010.... 这就是计数器,把 8 个集成一下放在黑盒中,就构成了 8 位的计数器。
当然这个计数器是异步的,后面的得等前面的通知,比较不准确,所以更好的是同步计数器,不过比较复杂,这里就不介绍了。
简单组装一下至此我们已经有了加法器、振荡器(时钟)、锁存器(触发器)和计数器,接下来我们就开始组装一下它们。
比如现在我们有一个灯泡,想测试一下八个锁存器,八个锁存器的话那么需要 3 个开关来表示具体选择哪个锁存器,2 的 3 次方等于8。
中间的黑盒肯定是拿来选择的,通过开关来控制通路,比较复杂我觉得稍微看看就行,反正就是电路选择。
输入的话也不用直接用八个,所以也搞个三个开关。
内部构造我就不贴了,也和选择器一样复杂,这叫译码器,最终完整电路图如下: