minecraft红石吧 关注:8,440贴子:43,301

回复:【教程】模红(红石模电)的入门教学与元件应用

取消只看楼主收藏回复

刚参加完哔哩哔哩的建筑比赛来着,国庆长假快被消耗殆尽了,接下来三天我尽量挤出时间更


IP属地:浙江来自iPhone客户端42楼2015-10-05 12:05
收起回复
    传统算法的除法器由于找不到了,所以在这里就直接上新算法
    除法器:
    新算法:设被除数a,除数b,多次用b减去a+1(这里要注意,我们要事先对除数进行加一运算),直到a的信号为0,记录一共减了多少次,这个次数减一就是商;并且导出a为0位置的上一位的a再减去一为余数。
    举例:11÷3,a=11,b=3。开始狂减:12-3=8,9-3=5,6-3=2,3-3=0(因为不会有负数所以我们得到的最后结果是0,后面继续减的过程没有意义所以不写出来了,但实际上是有的),我们看到减了4次,所以商为4-1=3,;我们看到在3-3的时候a变成了0,所以导出上一位的a:3再减去1=2
    所以,11÷3=3余2
    总结:这种算法速度比较快,不需要比较的过程,比较粗暴,但是相对中途运算量没有传统算法大,缺点就是不能直接输入被除数,被除数在输入前要先加一才能开始计算


    IP属地:浙江43楼2015-10-05 18:32
    收起回复
      广告
      立即查看
      下面我们来建造新算法的除法模块(我破例用不同颜色的羊毛来建造这样让大家把每个部分看得清楚一点)
      强模乘法模块:
      算法:累减
      作者:吸管
      堆叠体积:5x6x2(宽,高,长)
      详细介绍建造过程附图文解说,因为有很多个部分我们一个一个来
      首先这里浅蓝色的是累计商的部分,也就是一个累加器

      放上比较器,右边的为减法模式(右边那个比较器的方向反了,你可以调过来,对结果没有影响但是输出的地方会偏离)

      放上一个水缸并灌上水,用空瓶舀走2格水,剩下一格

      按上活塞

      绿色这里是控制余数输出部分,也就是导出上一位的a

      接下来顶部要拉除数的线(灰色羊毛)和被除数的线(品红色),注意中间有个半砖

      放上中继器,这里的摆法用意是“拼命用除数减去被除数”,品红色羊毛上加一个火把,这个火把是用来检测是否为0的

      如果为零,就导出上一位,如图的绿色线部分,就是连接到上一位的输出商控制部分

      黄色这里,是输出余数用的线

      放上比较器,我们可以看到沙子是充当一个阀门的作用


      IP属地:浙江45楼2015-10-05 20:56
      收起回复
        这是一个成品单元

        我们把它堆叠起来



        堆叠起来后还需要加一点补丁,比如累加器需要有信号源,除数输入时需要加一,余数输出时需要减一


        IP属地:浙江46楼2015-10-05 21:03
        收起回复
          接下来打补丁
          输入被除数要先加一,这里的两个熔炉(其实位置放错了大家自己改改),仅对弱模信号有用,强模信号输入要换用比较器环,加法请参考上方加法器教程

          余数输出要减一
          这里犯老毛病压缩了一下,熔炉是信号源

          下面这个是计算商的累加器,最终结果要减一,我也在两个信号源上做了手脚,左边的信号源强度比左边大一


          IP属地:浙江47楼2015-10-05 22:24
          收起回复
            更新除法器居然没反应?


            IP属地:浙江来自iPhone客户端48楼2015-10-06 00:20
            收起回复
              有没有人想研究深入的模电,比如模红全加


              IP属地:浙江146楼2016-07-02 00:07
              回复
                百度吞了我强模转弱模的一整楼


                IP属地:浙江148楼2016-07-02 00:45
                收起回复
                  广告
                  立即查看
                  模红译码器
                  译码器和转码器略有不同,译码器每一个信号都有对应单独的一个位置输出,常用与显示屏,其中弱模译码器较为常见,强模译码器暂时比较少用
                  弱模译码器一般利用自然红石信号衰减来译码,每衰减一次,如果信号强度为1,就输出
                  下图是一种烂大街的译码器,但也确实很耐用,缺点就是体积不够小,但对于一般显示屏来说是够的

                  某些特殊时候需要定制译码器比如下面这张活塞屏专用译码器

                  还有的不是利用信号衰减的,而是使用精确查找
                  比如下面这个是我在做扫雷字库时定制的译码器
                  原理:假设译码器有n位,输入为a,在两端输入a和n-a-1的信号强度,这样中间没有信号的位置就是要找的位置+1(当然可以改成a-1和n-a,这样可以刚刚好找到,下面这个只不过是在做扫雷时根据实际情况优化的)
                  优点就是体积很小速度也不慢 ,但不能无脑堆叠,信号强度必须自己调
                  这也反映了译码器不是固定的元件,事实证明根据实际情况制造译码器更经济,这就十分考验你的创造力和布线能力

                  下面是强模译码器,跟弱模原理一样,堆叠宽度2,但不是利用自然衰减,而是认为减1
                  有兴趣的同学可以把这个压到单片堆叠的,不过因为用途暂不明确所以很少人压缩



                  IP属地:浙江155楼2016-07-10 16:45
                  收起回复
                    接下来应该是进阶了,模红全加家族


                    IP属地:浙江156楼2016-07-10 16:47
                    收起回复
                      模红全加器
                      全加的传统概念是:对两个数和进位输入信号进行加法处理,并输出进位信号
                      那么按照这种传统思维得出的算法是:输入两个加数A、B和一个进位输入信号CI,先用一个大的信号源X(X要大于A+B),计算A+B的值:X-(X-A-B),如果得出的数大于等于要计算的进制的值,那么就把这个数减去进制的值(比如要计算的是10进制就减去10),输出到下一步,并输出进位信号C(进位信号只有1和0),;如果小于进制值,不作处理,输出到下一步;把处理完的数加上进位输入CI,如果大于等于要计算进制的值,减去进制值,输出结果,并输出进位信号C(前面的后面的进位输出C是可以连在一起的);如果小于进制值,直接输出结果
                      这样把多个全加器的进位输出C和进位输入CI首尾相连,就得到了并行全加器
                      可以看到过程很繁琐,信号源X是个麻烦的家伙,一言不合就会出现强模
                      如果我们没有强模,那要怎么计算和大于15的两个数的和呢?我们可以把这个算法优化一下
                      拿16进制举例
                      当A+B小于16时,A+B=15-(15-A-B)
                      当A+B大于等于16时,A+B-16(-16是减去进制值)=A-(15-B)-1
                      下面这一步是怎么得出来的呢?我们来推一推:15-(15-A-B)-16=A+B-16=A+(B-16)=A+(B-15)-1=A-(15-B)-1
                      好,算法已经get到了,那么用布线语言应该怎么描述呢?
                      输入A、B,
                      ①算出15-(15-A-B)的值,如果A-(15-B)>0则切断前面的输出,用另一个输出代替:A-(15-B)-1,并输出进位信号
                      ②把上一步的输出和上一位的进位信号加起来,如果大于等于16就减去16,输出进位信号,否则直接输出
                      可以看到进行了两次全加运算,一次是前面A+B,后面是结果和进位信号的,我们还可以优化一下,把后面的全加运算去掉,这个时候,我们需要一种进位技术:串行进位链
                      串行进位链在数电加法器中也有运用,这种加法器也称伪超前进位加法器,其应用可以大幅提高进位速度
                      但是在模红这里,我们运用它是要缩小体积和优化算法
                      进位链确实是一条链,他可以被切断,可以在某个位置输入
                      比方说一条进位链有4位,3的位置被切断了,1、2、4的位置是打开的,从1输入信号,那1、2都能接收到这个信号,而4被前面的3切断了所以收不到信号
                      进位链在全加器中怎么用:
                      第一步
                      每一位的默认状态位切断进位链
                      每一位的进位输出(A-(15-B)>0)接到下一位的进位链输入
                      当①计算出来的结果等于15时,打开进位链
                      进位链示意图

                      第二步
                      把上一步的输出加上进位输入(直接加)
                      如果上一步输出为15且进位输入为1,直接输出0,其他都不管
                      到这里就计算完了,之所以直接输出0不用管是因为进位已经在前面处理好了


                      IP属地:浙江160楼2016-07-21 14:24
                      收起回复
                        居然没人?6小时惨案


                        IP属地:浙江167楼2016-07-21 22:47
                        回复
                          帖子完结后打算再做个计算器,也算是提供一个元件库,也展示一下模红在体积和密度方面的优势


                          IP属地:浙江174楼2016-07-28 11:41
                          收起回复
                            200楼


                            IP属地:浙江来自iPhone客户端200楼2016-09-03 14:35
                            收起回复
                              广告
                              立即查看
                              @x沙丁鱼x
                              比较帖子也旧了 下面这种是现在常用的,小了快了也稳定了,而且pe应该也可以用



                              IP属地:浙江232楼2017-01-01 12:09
                              收起回复