物理沙盘吧 关注:6,073贴子:51,866

[NaturalStarcat] 加法计算器的原理和制作教程

只看楼主收藏回复

注意在看此教程之前需要了解ARAY数据库的运作原理 和 对活塞 DTEC等元素的使用方法,不过本文会讲解以上的东西

今天我教大家做一个加法计算器如上图所示
作品ID: 2520367


IP属地:湖南1楼2020-03-18 18:38回复
    在教大家之前我先介绍一下这种类型的加法计算器的是怎么运行的

    首先这是加法计算器的核心部分加法器
    此加法器的原理是利用活塞的伸长来进行加法运算,伸出1像素代表 +1
    如遇到输入大于9的数则会减10(活塞臂缩回去10像素),至于为什么要减10更详细的内容之后会讲

    这部分是带有缓存功能的编码器,存储键盘输入的数字这里的存储是二进制格式的数字
    十进制转二进制的方法之后讲到这部分后会详细说明的

    这部分就是输入用的键盘

    这部分是数字显示器,用来显示你输入的数字和加法运算器算出来的结果
    别被这么大一坨吓到了,原理实际上很简单,类似3D打印的方式一层一层的打印出来,这么大一坨的原因是因为这样显示出来的字体大,数字太小有点伤眼睛


    IP属地:湖南2楼2020-03-18 18:39
    回复

      这里我们先讲加法器的部分
      那么他是什么原理呢?我们先拆分出一位,给大家仔细讲讲

      这样的就是1单位的运算单元,他的运算原理是利用活塞的伸长来代表加运算

      (设定活塞的CTYPE可以让活塞推不动或者拉不了设定的元素,这里我设定的是DMND)
      比如现在的活塞状态是0
      如果我要加一那么活塞就伸长1像素

      如图所示现在的状态是1
      如果我要加5那么活塞臂的长度应该就是5像素

      如图所示现在的状态是5
      总所周知十进制的加法运算遵从满10进一
      那么我们要如何判断活塞长度等于或大于10呢
      很简单这里就需要用到(元素探测器)DTEC的CTYPE设定为你想要感应的元素
      Tmp2的设定是范围的意思
      如果感应到了设定的元素那么DTEC会在以DTEC自身为中心寻找5X5范围内的导体并持续
      传导电流

      如图所示DTEC的CTYPE=ARAY / Tmp2=5
      绿色的是感应范围
      红色的是放电范围

      比如我设定tmp2=5那么它的感应范围是如下图的半径为5的方形区域内

      Tmp2=3的情况如下图可以结合上图结合对比一下


      IP属地:湖南3楼2020-03-18 18:40
      回复
        好了现在我们了解到了DTEC的使用方法我们就继续讲解加法器的进位了

        如上图所示红箭头方向的元素是DTEC它的设定参数是CTYPE=PSTN(活塞和活塞臂都叫PSTN)
        Tmp2=3

        我们把DTEC的感应范围画出来可以发现现在的活塞节数是9如果活塞臂再伸长一像素那么活塞臂就会进入DTEC的感应范围
        进入感应范围后DTEC会向周围导体持续放电可以利用这个特性向前一位输出加1的信息
        但是只是向前发出进位信息是不行的
        因为你进位后代表本位的10已经没有了所以本位也得要做相应的变化
        所以我们需要本位需要减去10也就是活塞臂缩回去10像素
        所以我们可以利用元素让活塞缩回来
        活塞臂的长度=活塞的长度-1
        比如我2像素长的活塞伸长或者缩回都是1像素
        3像素长的活塞伸长或者缩回都是2像素

        如图所示
        但是要注意活塞至少需要两像素才能使用
        好的这里我们继续讲解加法运算器
        我们可以让活塞长度变成11像素,这样就可以直接缩回去10像素
        总体来说加法运算器的原理就是
        让输入的数字变成活塞臂的长度
        并且判断活塞臂的长度是否等于大于10
        如果等于大于10那么向前进位并本位减10

        根据前文的描述你应该会做出这样的东西
        但是你会发现输入数字必须要串行输入
        如果要输入9那么活塞就得要激活9次
        这样的方法浪费了大量的时间
        所以我们可以并行输入
        那么如何实现并行输入呢
        可以看见活塞是很长的所以我们可以放置多个导体让活塞伸长

        如图所示我们可以放置多个导体
        但是多个导体并不能乱放
        必须遵从任意组合都能变成1到9的摆放方式
        所以 如果我们以活塞伸长1 2 4 8
        的方式放置导体就会发现1 2 4 8 可以任意相加得到1到9的任意数字

        1+2=3

        2+4=6


        IP属地:湖南4楼2020-03-18 18:41
        收起回复
          综上所述我们可以并行输入了
          现在我们把它们连起来并看一下是如何运行的了

          可以看见我输入4+8结果等于12 计算是正确的
          但在实际使用中是这样的
          我们假设我想要计算25+29=54
          那么这种加法器的运算流程是

          首先我们在十位上输入2

          然后在个位上输入5(1+4=5)
          这样就完成了输入25

          之后我们输入29
          十位上输入2
          可以看见现在十位的活塞已经变成2+2=4了

          然后我们输入9(1+8=9)可以通过这张动图可以发现输入9的时候个位的数字变成了14
          明显14已经大于10了所以DTEC感应到并向前一位发出进位的信号并把个位减去10
          运行完成后会发现25+29=54结果完全正确!
          需要注意的是这种加法器要等待单个单元计算完成后再进行下一位的数据输入
          以上就是加法运算器的原理了,是不是感觉原理很简单了呢?


          IP属地:湖南5楼2020-03-18 18:41
          回复

            现在我们介绍键盘
            键盘在里面是最好做的
            你只需要考虑每个按键都能单独接出来一根线而不干扰其他的按键就行了
            这个很简单不懂的可以去存档里看看
            键盘的制作方法就不写了

            接下来我们介绍带有缓存功能的编码器
            它可以把键盘输入过来的数字转换成加法器可以识别到的数据并缓存
            但是在学习这个内容之前,我们需要先了解前置科技,ARAY数据库
            ARAY数据库可以说是很万能的东西,你可以用它来做打印机,单片机,以及数据库
            那么我们接下来就讲一下ARAY数据库的原理和结构把
            首先你要先了解不同导体和ARAY组合下ARAY发射出的射线的不同
            PSCN+ARAY发射出的是红色的BRAY,它具有消失时间快和能清除白BRAY的特性
            其他任意导体(WWLD除外)和ARAY组合发射出来的都是白BRAY,白BRAY停留时间长,并且两个白BRAY射线相撞会让白BRAY停留时间变的更长,此时的BRAY可以通过发射出来的白BRAY射线

            这张动图可以很好的展示其特性

            ARAY数据库利用的就是初始状态的bray不能穿过初始状态的BRAY或者不能穿过红bray的特性来制作的

            这个就是基础结构的ARAY数据库

            红框的区域是数据区数据就是一个一个的ARAY

            那么问题来了这里为什么要放ARAY呢,因为ARAY对于BRAY来说是“透明”的,红白BRAY都可以直接通过ARAY,除此之外还有STOR,INWR,FILT和激活状态的SWCH,如上图

            这是他的运行动态图
            可以发现首先活塞带动扫描头发射红ARAY用来阻挡光路
            然后左边的ARAY被激活有ARAY填充的地方光路不会被阻挡所以数据就在最右边输出了
            随即红ARAY发射清除掉白ARAY这样可以大大减少机器的响应时间

            扫描头到达末尾后被DTEC检测到然后向活塞发射电流到NSCN上让活塞收回


            IP属地:湖南6楼2020-03-18 18:41
            回复

              好的现在我们话题回到编码器上
              之前我们讲到了加法器,加法器是利用活塞的伸长来计算,我们利用4个激活点来控制数据的输入即伸长1像素 伸长2像素 伸长4像素 伸长8像素
              之前说过这样的组合可以组成任意1到9的数字
              所以编码器的作用是只使用1位输入输出4位信号直接控制活塞的伸长长度

              这就是ARAY数据库,只是改了一下
              扫描头直接舍弃,直接从按键接出直接输入到对应的位置

              这是它运行起来的样子

              然后数据输出后会激活对应的CRAY,这里的CRAY CTYPE=ARAY / Tmp=1
              然后最上面的CRAY会用能阻挡ARAY射线的元素把空位填补,随后活塞推出
              这就是缓存的原理


              但是光缓存是不行的,我们还得要把数据读取出来
              我们的读取方法是首先利用活塞推出数据条让数据到读取位上来,然后下面的ARAY发射,数据条上有ARAY的地方ARAY射线能通过从而激活上面的导体
              好的现在我们会把数据写入内存并读取出来了,接下来介绍如何写入到加法器里

              可以看见红框里的活塞

              活塞带动写入头
              配合之前的缓存读取器把数据写入到每一位加法器里
              输入完一位活塞就缩到下一位去继续输入,直到全部运算单元都输入完毕然后活塞归位
              活塞归位可以利用DTEC检测活塞支架(FRME)
              接下来是最后一部分了

              显示器
              这里同样利用了ARAY数据库
              那么是什么原理呢

              可以看作是3D打印机一样
              每一层每一层的打印出来
              光看动图是不是不怎么明白?
              我们拆解一下动作


              IP属地:湖南7楼2020-03-18 18:42
              回复

                怎么样是不是这下就明白了?
                首先打印出字体,然后填补空位,打印完后活塞推出

                红框的结构只是为了把ARAY数据库里的数据延迟达到上面GIF的效果
                如果不明白的可以去拆解存档
                接着我们配合加法器和显示器说一下加法器的运算结果是怎么输出的

                我们把这两部分结合起来

                可以看见红框部分
                这是由活塞带动激活头
                给下面的加法器从高位到低位给电


                IP属地:湖南8楼2020-03-18 18:42
                回复

                  激活头上面的CRAY+INWR的组合可以给下面的ARAY+INWR给电
                  激活头上面的ARAY是让加法运算单元归位到0位的
                  那么我们如何输出呢

                  这个活塞可以看作是ARAY数据库的扫描头只需要激活活塞上的ARAY就可以输入到显示器的数据库里,
                  然后输出可以看见这里活塞上的ARAY我接的是INWR导体
                  INWR导体之前也说过了ARAY射线可以穿过INWR导体

                  这样如果后面又多个扫描头在同一位置的时候就可以保证输出时间完全一致而不是接龙一样的越往后延迟越高
                  你们可以结合存档看一下教程,到此为止,这次的教程终于是完成了
                  呼~终于可以歇会了
                  有什么不懂的可以发帖问我,我有时间会回复的


                  IP属地:湖南9楼2020-03-18 18:44
                  回复
                    星猫NB!
                    希望有更多的人能了解PTP里的电学逻辑~


                    IP属地:中国澳门来自Android客户端10楼2020-03-18 18:57
                    回复
                      是星猫大佬!awsl
                      ------------------
                      突发奇想
                      将粒子数量代替活塞伸出长度,用探测器统计粒子数量
                      理论上应该能做一个傻瓜型加法器吧?


                      IP属地:广东11楼2020-03-18 19:00
                      收起回复
                        借贴~~
                        才下载 TPT 几天,逃网课逛 Github 找到的。发现还蛮好玩的。花点时间做了个小东西。(我目前能做的最小的逻辑门)

                        这是我做的与门(上)和或门(下)。
                        青蓝色是输入,亮紫色输出。(都是导体)
                        红色是PSCN,绿色 NSCN
                        白色是绝缘体包装(内部也会用到,主要是为了防止一些不太想要通电的地方)
                        或门比较简单,而与门化了个下午


                        12楼2020-03-18 20:21
                        收起回复
                          那个…怎么改透镜的颜色啊…应该不只是调温度吧


                          IP属地:广东13楼2020-03-19 02:06
                          收起回复
                            做了好久的教程居然没人回复,哇的一声哭了出来


                            IP属地:湖南来自Android客户端14楼2020-03-19 23:43
                            回复
                              坐等下一个教程


                              IP属地:江苏15楼2020-03-20 08:58
                              回复