首先来简单说明一下红石模电是什么,模电 (仿真电路/模拟电路) 是相对于数电 (数字电路) 的一个领域,跟数电只在 0 和 1 的信号强度下运算不同,模电是对连续强度的信号进行处理,而 Minecraft 中的红石信号强度不只有 0 和 1 而已,也因此才会出现红石模电这一领域。若某个红石模电只处理 0~15 红石强度的信号,则会将此模电称作弱模电,反之若可处理超过 15 红石强度的信号,则会称作强模电,而本文章所讨论的是弱模电。有一点需要特别说明的是,红石模电中的信号强度是有能阶的,这与现实世界中的模电并不相同,因此不该将两者混为一谈,两者间的观念更不该直接互通,由于作者我并没有学习过现实世界中的模电,因此下面文章中的用词与观念可能会跟现实世界中的模电学有出入,所以不要太认真地将作者我说的东西去跟现实中模电学做比对。
除了 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))。
上面已经介绍了基本的模电运算,那接下来会介绍一些模电的简单应用。第一个应用是信号延迟器,这设备也是作者我进入红石模电这领域的一个重要契机,当初就是因为看到别人做了一个这样的设备,才让我领悟到红石的真正潜力在模电运算,这个设备巧妙的地方在于它是一个循环运算,红石信号每转一圈,它的强度就减弱一阶,直到强度为 0 时才输出信号,哪怕是最小的循环,其延迟的时间长度也可以抵好几个中继器,若是增加回转单圈的时间长度,其增加的时间长度将会以乘倍成长,远胜过增加中继器数量的加法成长,小小一个循环就能有数十个中继器才能达到的延迟效果。
此外这个设备还有一个特殊的应用,这必须从模电的信号传输说起,红石模电在传输速度上一直是个劣势,这是因为需要大量比较器来维持信号强度的关系,但在长程的模电信号传输中,有一种方式可增加传输速度,那就是先把模电信号转成数电信号再进行传输,然后在信号接收端再转换回模电,这就必须用到信号延迟器的循环运算原理,发出信号的一端是会逐渐减少信号强度的循环,而接收信号的一端是会逐渐增强信号强度的循环,最重要的是两端循环的单圈回转时间必须相同,实际设备可参考下图。
不知道各位有没有注意到,在上面的信号接收端中有一个用来保存模电信号的电路,跟数电一样,模电信号也是可以被保存的,根据信号的保存原理,大致可分为 “循环”、”正反器”、”电容” 三种类型,先来说最简单也最直接的 “循环”,它其实就只是将信号保存在一个回路中,信号会不断在回路中回转且不丧失强度,因此就可以用来保存信号。
再来介绍 “正反器”,它是由一对互减的比较器所组成,当对其中一个比较器进行减法时,它会影响到另一个比较器的输出结果,而这改变又会回头影响到第一个比较器,使得信号被保存下来。
最后就是 “电容” 了,其实电容又可分成许多细类,其设计更是五花八门,但不论是哪一种电容,它的基本原理都是使用容器 (例如储物箱、界伏盒) 将信号保存下来,这边只介绍两种当作范例。第一种电容是由两个对接的漏斗构成,当比较器对漏斗进行满箱检测的输出信号强度,与要保存的信号强度不同时,则让漏斗中的物品往某特定方向移动,而当信号强度相同时,则同时锁住两个漏斗来维持信号强度。
第二种电容是用界伏盒作为保存容器,与第一种电容不同的是,保存的信号强度是直接跟容器内物品的数量有关,具体来说是信号强度 = 物品数量 – 1 (减 1 是为了保存强度 0 的信号的关系),这种电容在不需读写数据时,可以将界伏盒存放在其他地方,只有在需要读写容器数据时,才需要将界伏盒搬到设备上。
最后再介绍一个实用的红石模电设备,那就是红石计数器,先来看一下电路图。
这边以 2 比特的计数器作为范例,每输入一次信号,个位数计数器的信号强度就会增强一阶,当个位数计数器的信号强度到达最大值时,下次接收到输入信号后,将清空个位数计数器,并将十位数计数器的信号强度增强一阶。