软妹裙子吧 关注:1,007贴子:1,844

【申请贴】渣渣申请加入trp

取消只看楼主收藏回复

1l 1+1=2(别的计算方式太卡)


IP属地:安徽1楼2017-01-30 22:53回复
    首先是数据输入,输入的方式当然是直接输入bcd(0自然没必要输入)

    然后通过这里汇集到一起,输出

    这里是说明是否有信号的一个信号,也汇集起来,输送过去

    通过这条线传递过去。

    如下是决定这条信号是输入小数部分还是整数部分的


    如果输入整数部分,那么就在这里变成脉冲信号,进行处理

    通过这里,我可以进行信号的转移--如果你输入了一个1,想把它变成12,而一般我们都是从左往右写,所以就要移动1。这里我移动的方式是上一位输入下一位,然后上一位清零,延迟如下图。我需要做到上一位给下一位,然后清零,然后再下一位输入,需要把握好延迟。虽然延迟很长,但是输入两个之间的距离可以是0,所以还是不是很长。



    IP属地:安徽3楼2017-01-30 23:03
    回复
      第七、第八位有一点问题,所以我做了这个防止出问题

      然后是小数部分,输入小数点了以后,小数点的信号会把整数模式转化为小数模式,使得整数无法输入而小数可以输入(反向的方式是输入运算符号)

      这个信号控制整数与小数的通断。

      如果那里可以输入,他就会被运送到这个橡木的数据桥梁上,然后被活塞记录

      这里决定1-9的数位,哪一个可以输入,每来一次有数字来了的信号,这里就会移动一位,让下一个输入。没有的时候默认这样,移一位就到了第一位

      允许通过的位进入这个t触发器,被寄存下来。


      IP属地:安徽4楼2017-01-30 23:09
      回复
        如果整数位或小数位的最后一位有数字,但是还想输出,这里会阻止输出


        正负号的转变是通过一个rs锁存器(也就是输入负号无法撤销);当有计算方式来的时候,会先把信号输入下面的t触发器,然后清空信号,连接到了这个bcd转bin上去。
        如下是整数bcd转bin,运用的方式是abcd=10(10(10a+b)+c)+d;当然,我的整数是9位的

        如下是小数bcd转bin,使用吸管触压缩的满五加三器,9位小数算出34位来(因为绝大多数十进制小数都是
        2进制无线循环小数,这样比较精确,再加上总共是64位一些地方比较方便)。

        运算方式一共有6种,分别是加、减、乘、除、平方、平方根。

        这个是运算方式的计算码,共8位,上4位是有用处的,下面4位区别类似东西的;上四位中,前两位是运算方式位(第一位使用两个数计算1,一个数0;第二位使用前面的数(使用两个数计算的是前面的和后面的(如+)计算1,使用后面的数计算0(两个数是后面的两个数,如log_a b)

        这边是显示屏码,到显示屏的时候再说

        通过线路运到这里,分开用左边和用右边计算。

        这个线路是分开使用前面或后面数的,前面输入左边,后面输入右边



        IP属地:安徽5楼2017-01-30 23:22
        回复
          被分开的信号通过两边分别输入到合适的方位


          由于运算顺序位必定有至少一位是1(+-01,×÷10,其他11,所以可以判定这里是否有信号,如果这里有运算方式,就会阻止信号的进入。


          而数字是通过正负号至少有1位是1(正数10负数01),如果第一位没有数字,就输入第一位;


          如果第一位有信号,且第二位没有信号,那么就可以输入第二位。



          (我做这么高的原因是我以后可能用这个做表达式计算器)
          等于号的输入


          IP属地:安徽6楼2017-01-30 23:31
          回复
            如果这里有信号,输出的时候就会输出这里的信号;否则不会输出。

            运算符号同理

            通过无延迟中继器,使得所有的信号输出时间均相同。
            通过无延迟中继器,使得输入任何一位的信号均同时,让它在0.1s的运算位输出中,能有效输出
            这里是用来鉴别运算方式的,由于输出信号同时,所以可以鉴别,如果正确,就可以打开了

            这里也通过无延迟中继器,否则运算位需要太长的脉冲

            如果有运算方式来,就会打开这里,使得信号导出。

            然后这里把被无延迟中继器隔开的信号弄到一起,就可以计算了

            如下是加减混合计算器


            IP属地:安徽7楼2017-01-30 23:42
            回复
              这里是判定是加还是减的,因为+是11010000,-是11010001,所以在前几位正确的情况下,只需要看最后一位,接一个t触(能被清零信号还原的)就行

              加法来了的信号会在4秒后打开出口,6秒左右后清零这一块t触发器(此时出口已经锁上)

              这个可以算负数,方法是,负数=1000...0-该数(比如-5是-1 0...0101,呢就变成1 1...1011),相加,减去负数个数的100...0,然后有一个特征位决定正负,另一个决定是否运算溢出)



              如果运算溢出,就在这里阻止信号的倒出,输出一个error信号,同时命令方块说运算溢出(不知道啥时候破坏了所以放回去)


              IP属地:安徽8楼2017-01-30 23:49
              回复
                下面是乘法,乘法是我观察乘法计算式观察出来的算法(雾)百度的逻辑
                这时把下一位信号传递到这来的萤石

                这个是移位看是否有加的信号决定

                这个是与门,如果下面一位是1,那么乘数导出至下一个全加器,否则不导出

                在全加器这里被加上,看下一位有没有加数

                最左边的是输出的信号,由是否有×信号决定,延时4分钟(本计算器不输出计算过程);十字指向的是清零信号,延时4分钟10秒(最大延迟),如果你不想忍了,你可以点击结束运算按钮,如果这里正在算,就会给中间的无延迟中继器发出脉冲信号,使得立即被打开,不久清零)
                这里是输出,共计输出34位小数

                3*7=21计算成功

                通过这里导回去

                这个是正负号的计算,负负得正所以用一个异或门,然后输出


                IP属地:安徽9楼2017-01-30 23:57
                回复
                  这个是除法器的延迟,延迟6分钟(因为能算出98位来)

                  这里是被除数输入

                  由于卡,这里输出了一些莫名其妙的数字(我算的是0除1(保护电路)啊)

                  出现了这里这个非常神奇的情况

                  还有漂浮的红石

                  蜜汁中继器(存在了10秒左右)

                  除法器也是百度的逻辑来实现,这里是减法器,减去的全部都是除数的补码


                  这里是除数的传递,还有一个移位


                  IP属地:安徽10楼2017-01-31 00:02
                  回复
                    wifi被关了,未完待续


                    IP属地:安徽来自Android客户端11楼2017-01-31 00:04
                    回复
                      如果减得过,输出减以后的结果,原信号阻止;如果减不过,输出原结果,减的结果被阻挡,但是,不知道为啥,进位特别快,比算出结果都快,那么就会输出1111111导致许多全加器一起计算,极大拖慢电脑速度,所以除法器只在小的时候测试过。下两图是是否阻止的


                      由这里传递给两个地方看是否阻止

                      这个是否阻止也作为结果的一位输出,总计98位

                      全部输出到这里,等待输出,前34位是运算溢出

                      这里是保护信号的有无

                      同时,除法器有第一个数学错误:除以0,方法是所有除数或门,如果是0,输出,然后计算器就知道,error了
                      下面是乘方器,乘法器移动过去的,就是自己乘自己


                      在这里把上面的信号传递给下面


                      IP属地:安徽12楼2017-01-31 07:20
                      收起回复
                        平方根是左边的运算,需要从左边输入,所以这个也需要做出一些调整(图1、2);平方根用的是coffee的算法,减法器和乘100+1器如下,结构和除法器差不多(图3-6);停止运算也是有的,不过和除法器差不多,别指望它能多快算出来;总延迟是84秒(图7);导出的是最后一个的被减数(区块没加载,图8);导出以后,通过活塞转移(图9)


                        IP属地:安徽来自iPhone客户端13楼2017-01-31 09:14
                        回复
                          res部分:res是上一个输出,输入如图一R(显示屏上勉强挤下了res);两个是反的,因为看的方向相反,为了bin转bcd可以理解,所以就要翻过来,电路如图2;(活塞有bud,放了活塞更新)res核心部分电路如图3-8,图三是输入,由于正负号来得最慢,所以先暂存一下,等正负号来了以后,清空上一次res信号,打开使它输入,输入完了以后,清空本次暂存信号;当按下res按钮,就可以输出res信号(不清零),然后作为一个信号输出;当刚计算完时,直接输入一个用前面的数计算的可以带来res信号,不过不建议这么用,最好是3+res而不是+3(无法显示)


                          IP属地:安徽来自iPhone客户端14楼2017-01-31 09:29
                          回复
                            bin转bcd整数部分不用说,还是吸管的;小数部分自己压的满八减三器(和吸管的一样大);(图1-2)为了保证正确,加上显示屏也是9位.9位,所以要对信号进行处理。图三是对第34位小数信号的处理--0舍1入,一个全加器的一半就可以完成;然后是四舍五入(11位以后舍去,对第十位),满5判定和满五加三器一样(图4),然后如果这一位是9,且上一位也有进位,就把它变成15,就可以+1,否则只是输出,这样通过一个进位链实现四舍五入(图5-6),然后是把信号反过来,同样是因为看着不一样,非常。。。壮观(图7),然后下面也要反过来


                            IP属地:安徽来自iPhone客户端15楼2017-01-31 09:55
                            收起回复
                              然后是对0信号的处理,显示屏上显示-000000002.000000000显然是不符合人们通常书写方式的,应该是-2,所以要把0去掉。图1:整数位上的0去掉,如果一位前面全是0,那么这位的一个特征信号就被打开,显示屏无法显示(进位链实现),第一位一定显示;图2:小数位去0,后面全是0显示屏无法显示(同样进位链),如果小数位没有数字,不显示小数点;图3:负号显示,如果是负,那么进位链可以进位;如果该位是最后一个没有数字的位数,那么显示(这一位0,下一位1)


                              IP属地:安徽来自iPhone客户端16楼2017-01-31 10:01
                              回复