【心得】红石模电的设计与运用

这篇文章算是作者我对制作红石模电的一些心得分享,同时也因为讨论红石模电的玩家较少,导致这一领域对入门者来说缺乏可参考的数据,希望这篇文章可帮助入门者了解到红石模电的基础设计重点,也希望因此吸引更多人愿意进入这个领域研究。

首先来简单说明一下红石模电是什么,模电 (仿真电路/模拟电路) 是相对于数电 (数字电路) 的一个领域,跟数电只在 0 和 1 的信号强度下运算不同,模电是对连续强度的信号进行处理,而 Minecraft 中的红石信号强度不只有 0 和 1 而已,也因此才会出现红石模电这一领域。若某个红石模电只处理 0~15 红石强度的信号,则会将此模电称作弱模电,反之若可处理超过 15 红石强度的信号,则会称作强模电,而本文章所讨论的是弱模电。有一点需要特别说明的是,红石模电中的信号强度是有能阶的,这与现实世界中的模电并不相同,因此不该将两者混为一谈,两者间的观念更不该直接互通,由于作者我并没有学习过现实世界中的模电,因此下面文章中的用词与观念可能会跟现实世界中的模电学有出入,所以不要太认真地将作者我说的东西去跟现实中模电学做比对。

对于红石模电来说,最重要的一个红石组件就是比较器,大部分的模电信号都需要透过比较器进行传输与运算,同时比较器也是一个重要的模电信号源 (例如对容器的满箱检测)。而比较器本身也提供了两种基本运算,分别是 “比较 (CMP)” 与 “减法 (MINUS)” 运算 (对应比较器的 “比较模式” 与 “减法模式”,详细运算规则可参考 Minecraft Wiki),CMP 比较常用于闸门上,例如当信号到达某一强度后将输出信号,而 MINUS 比较常用于数字运算上,事实上大部分数字间的运算都是由 MINUS 衍生而来,另外 MINUS 也可以当作闸门使用,不过还是跟 CMP 的闸门存有差异,根据不同的状况来调整使用即可。

除了 CMP 与 MINUS 外,还有三个重要的基本运算,分别是 “反转 (REV)”、”取大 (MAX)”、”取小 (MIN)” 运算,REV 可以将弱信号转换成强信号,强信号转换成弱信号,且根据系统的进位数不同,转换效果会有差异,以十六进位的系统来说,REV(A) = MINUS(15, A),也就是用最强的信号减掉输入的信号,输入的信号越强,输出的信号就越弱。MAX 是以两个输入信号中较大的那个作为输出,它的实现方式非常简单,只需要将两个输入源相接即可,这是因为较强的红石信号会覆盖过较弱的信号。MIN 是以两个输入信号中较小的那个作为输出,它的实现方式有两种,第一种比较直观,先将两个输入源反转,取较大的后再反转回来即可,也就是 MIN(A,B) = REV(MAX(REV(A),REV(B)))。
第二种方式需要稍微思考下,它就是 MIN(A,B) = MINUS(A,MINUS(A,B)) (或者写作 A – (A – B)),但为什么这会是对的呢?我们慢慢分析,先假设 A <= B,此时 A – B 的结果会是 0 (因为不会有小于 0 的信号强度),因此 A – (A – B) 可简化成 A – 0 = A,所以输出的会是 A,而当 A > B 时,A – B 的结果必定大于 0,所以算式不可简化,但当我们把算式中的括号拆开后,将会变成这样 A – A + B = B,因此输出的会是 B,这样就证明了 MIN(A,B) = MINUS(A,MINUS(A,B))。

看到这边可能已经有人注意到了,红石模电中的 REV、MAX、MIN 运算,分别可对应到红石数电中的 NOT、OR、AND 运算,也就是说拥有红石数电开发经验的人,在开发红石模电时可以运用部分的数电开发经验,我相信对于入门者来说,先了解数电再来学习模电会有相当大的帮助。

上面已经介绍了基本的模电运算,那接下来会介绍一些模电的简单应用。第一个应用是信号延迟器,这设备也是作者我进入红石模电这领域的一个重要契机,当初就是因为看到别人做了一个这样的设备,才让我领悟到红石的真正潜力在模电运算,这个设备巧妙的地方在于它是一个循环运算,红石信号每转一圈,它的强度就减弱一阶,直到强度为 0 时才输出信号,哪怕是最小的循环,其延迟的时间长度也可以抵好几个中继器,若是增加回转单圈的时间长度,其增加的时间长度将会以乘倍成长,远胜过增加中继器数量的加法成长,小小一个循环就能有数十个中继器才能达到的延迟效果。

此外这个设备还有一个特殊的应用,这必须从模电的信号传输说起,红石模电在传输速度上一直是个劣势,这是因为需要大量比较器来维持信号强度的关系,但在长程的模电信号传输中,有一种方式可增加传输速度,那就是先把模电信号转成数电信号再进行传输,然后在信号接收端再转换回模电,这就必须用到信号延迟器的循环运算原理,发出信号的一端是会逐渐减少信号强度的循环,而接收信号的一端是会逐渐增强信号强度的循环,最重要的是两端循环的单圈回转时间必须相同,实际设备可参考下图。

当发送端要传输某强度的信号时,它会将该信号转换成某特定时长的数电信号,而接收端在收到某特定时长的信号时,会将其转换成特定强度的模电信号,由于发送端与接收端的循环单圈回转时间相同,所以接收端的信号强度将会跟发送端相同。

不知道各位有没有注意到,在上面的信号接收端中有一个用来保存模电信号的电路,跟数电一样,模电信号也是可以被保存的,根据信号的保存原理,大致可分为 “循环”、”正反器”、”电容” 三种类型,先来说最简单也最直接的 “循环”,它其实就只是将信号保存在一个回路中,信号会不断在回路中回转且不丧失强度,因此就可以用来保存信号。
再来介绍 “正反器”,它是由一对互减的比较器所组成,当对其中一个比较器进行减法时,它会影响到另一个比较器的输出结果,而这改变又会回头影响到第一个比较器,使得信号被保存下来。
最后就是 “电容” 了,其实电容又可分成许多细类,其设计更是五花八门,但不论是哪一种电容,它的基本原理都是使用容器 (例如储物箱、界伏盒) 将信号保存下来,这边只介绍两种当作范例。第一种电容是由两个对接的漏斗构成,当比较器对漏斗进行满箱检测的输出信号强度,与要保存的信号强度不同时,则让漏斗中的物品往某特定方向移动,而当信号强度相同时,则同时锁住两个漏斗来维持信号强度。
第二种电容是用界伏盒作为保存容器,与第一种电容不同的是,保存的信号强度是直接跟容器内物品的数量有关,具体来说是信号强度 = 物品数量 – 1 (减 1 是为了保存强度 0 的信号的关系),这种电容在不需读写数据时,可以将界伏盒存放在其他地方,只有在需要读写容器数据时,才需要将界伏盒搬到设备上。

与现实世界中类似的是,”循环” 与 “正反器” 的读写速度比 “电容” 快上不少,而 “电容” 具有较高保存密度的潜力,可以根据需求来使用不同的保存方式。

最后再介绍一个实用的红石模电设备,那就是红石计数器,先来看一下电路图。
这边以 2 比特的计数器作为范例,每输入一次信号,个位数计数器的信号强度就会增强一阶,当个位数计数器的信号强度到达最大值时,下次接收到输入信号后,将清空个位数计数器,并将十位数计数器的信号强度增强一阶。

另外根据电路图还可以发现,多比特的计数器也只是将一个结构不断地重复而已,因此扩充起来非常方便。
那为什么说计数器很实用呢?这是因为在复杂的红石电路中,经常会将设备拆分成数个阶段来运行,这时计数器就可以用作整个设备的中央控制器,由计数器负责记录设备目前的状态,并根据设备的状态,将控制信号分送给各个不同的部件,协调整个设备的运行。
那么这篇分享文就差不多到这里了,其实还有许多更复杂的模电设备没有介绍,像是加法器、内存之类的,不过这篇文章的主要目的是为了让更多人了解到红石模电这一领域,所以我只选了些基本电路与实用电路介绍,若各位有兴趣做更深入的研究,其实直接动手玩是最快的,我自己也有许多设备是无意间被玩出来的,虽然很难说已最佳化,毕竟红石的可能性实在太多,但在一次次的优化与开发中一点一滴地累积经验,然后突然的灵光乍现,就能让红石的等级往上抬了一阶,这大概就是玩红石最大的乐趣所在。
本文来自网络,不代表3楼猫立场,转载请注明出处:https://www.3loumao.org/20150.html
返回顶部