玩具电路搭建纪实--为什么国外中学生这么牛逼

玩具电路实现基础门电路和功能记录

导引

  1. 建立非门功能
  2. 验证电路等价
  3. 理解存储电路
  4. 设计全加电路

非门

玩具电路搭建纪实--为什么国外中学生这么牛逼
其实非门简单来说就是利用了三极管高压导通的特性来使输入高电压的时候让目标电路对于这个led电路来说就是led短路来实现非门的效果,所以记得让led和三级管的上下两个接线的地方并联就大功告成了。

INOUT(TOGGLE SWITCH) OUTPUT(LED)
ON(1) NONE(0)
OFF(0) GREEN(1)

验证电路等价

玩具电路搭建纪实--为什么国外中学生这么牛逼
其实这个就是代数里面的分配率啦很直观就能看懂,验证也很简单就是把输入信号的开关的一端接入到先and gate 再or gate和先or gate 再and gate就可以办到了。

A B C O1 O2
0 0 0 0 0
0 0 1 0 0
0 1 0 0 0
0 1 1 0 0
1 0 0 0 0
1 0 1 1 1
1 1 0 1 1
1 1 1 1 1

理解存储电路

玩具电路搭建纪实--为什么国外中学生这么牛逼
其实这个储存的电路也叫作时序电路算是数字电路比较有意思的东西吧,非常神奇我觉得,神奇的地方就在于一般中学里面的电路所可以得到的结果都是可以由当前的输入直接得到的,也就是和时间没有任何关系,不管在什么时间在任何电路搭建这种电路都可以得到同一种结果,但是对于时序电路来说则不是这样,输出的结果不仅仅和当前的输入有关,更重要的是和电路的上一个状态有关系,也就是引入了时间这个参量。所以在计算机硬件层面起到了很重要的作用。如果之间的与或非电路是计算机的逻辑的主要组成部分那么时序电路就是专门负责数据的那一部分,两者同等重要,如果没有时序电路那么计算机不如直接叫作计算器算了。

~set ~reset Q(X) ~Q(Y)
1 1 0 1
0 1 1 0
1 1 1 0
1 0 0 1
1 1 0 1

设计全加电路

玩具电路搭建纪实--为什么国外中学生这么牛逼
在这里不得不吐槽一下这个网页的服务器可能不是很好,导致我做这个的时候很卡。大家应该对于半加电路应该比较了解,半加电路的结果分成了进位的本身的这一位。进位就是用and gate就可以做到啦,本身的这一位是用 xor 异或门来做到。
全加电路就是在半加电路的基础上引入了进位这一个输入,引入这个的原因就在于可以通过把进位这一位等价成原来半加的两个输入,这样而来就是从半加只能算一位的加法扩展到无限位。在这里还是得说一下就是如果真的是要用电路来算多位的加法的话用全加器是很不好的因为可以发现其实每个电路的运行都依赖于上一个全加器的进位的输入,所以如果位数真的很多的话会造成得到结果的运行时间特别长,为了解决这个问题就有look ahead的加法电路主要就是可以自己在加法的中间自己判断这个进位会不会对后面的结果有影响没有的话直接忽略可以很大程度上节省时间,我觉得这种原理其实在计算机科学很多地方都可以见到,主要就是空间换时间的动态规划的优化原理啦。