用 Minecraft 红石入门数字电路:从非门到 RS 锁存器

5 分钟阅读 阅读量
目录

很多人第一次接触「数字电路」是从课本上的逻辑门符号开始的:一个三角形加个圈就是非门,两条线交叉就是锁存器。符号记住了,但它到底在干什么、为什么需要它,往往一直悬着。

Minecraft 的红石系统提供了一个难得的中间层:它足够简单,你能亲手把每一根导线、每一个逻辑门搭出来;又足够完整,你可以在里面实现从非门到存储器的全部基础电路。这篇文章就借红石,把数字电路的核心概念串一遍。

红石系统 = 一套数字电路

红石可以理解为 Minecraft 的「电力系统」,由三部分组成:

数字电路 红石对应物 作用
电源 / 高电平 红石块、拉杆、按钮、红石火把 提供信号
导线 红石粉 传输信号
缓冲器 / 延迟线 中继器 刷新信号、引入延迟、单向导通
逻辑门 红石火把、比较器 运算
输出 / 指示灯 红石灯、活塞、门 执行动作

它和真实数字电路最大的区别是:红石的「电平」不是只有 0 和 1。

信号强度:不是二值,而是 0–15

电源(火把、拉杆、按钮)输出满级信号 15,红石粉每传播一格衰减 1 级:

text
1
15 → 14 → 13 → … → 1 → 0

也就是说,单股红石线最长只能传 15 格,到 0 就彻底失效。想继续往前传,必须在中间插入中继器把信号重新拉回 15。

这个特性和真实电路里的信号衰减、网络里的传输距离限制是一回事:任何长距离链路都需要中继/放大。这也解释了为什么红石电路里「中继器」出现频率极高——它既是逻辑元件,也是物理上的信号再生器。

电压类比:可以把 0–15 看成模拟电压等级,而逻辑门真正读取的只是「是否大于 0」。这也正是数字电路从模拟信号里提取 0/1 的过程。

第一个逻辑门:红石火把就是非门

数字电路里最基本的门是非门(NOT):输入 0 输出 1,输入 1 输出 0。

红石火把默认是点亮的(输出 15)。当它附着的方块被供能时,火把会熄灭——输出从 1 变成 0。这恰好就是非门的真值表:

输入 A 输出 Q = ¬A
0 1
1 0
NOT:Q=A‾\text{NOT}: Q = \overline{A}

在电路图里,一个非门就是一个三角形加一个小圆圈;在 Minecraft 里,它就是「一根红石火把 + 一个被供能的方块」。符号和实体第一次对上了。

有了非门,就可以继续往下搭:

  • 非门串联 → 缓冲(两次取反还原,但引入了延迟)
  • 非门并联取最大 → 或门 NOR 基础
  • 多条输入接到同一个火把附着方块 → 只要有一条供能,火把就熄灭

中继器:缓冲器 + 延迟元件 + 二极管

中继器是红石里最被低估的元件,它同时承担了三个数字电路里独立存在的功能:

  1. 信号再生:输出固定 15,抵消衰减(缓冲器)
  2. 单向导通:信号只能从前端流向后端,反向不通(二极管)
  3. 可调延迟:右键切换 1–4 rt 的延迟(延迟线)

把它看成电路里的「带延迟的缓冲器」就很好理解。这三个属性组合起来,让中继器成了时序控制的核心工具——在数字电路里,几乎所有需要「等一会儿再执行」的地方,都需要延迟元件。

时间单位要记牢:

单位 换算 说明
游戏刻 gt 1 秒 = 20 gt 游戏主循环的最小时间片
红石刻 rt 1 rt = 2 gt = 0.1 秒 红石元件的延迟计量单位

中继器的 1–4 档延迟,对应的就是 1/2/3/4 rt,也就是 0.1–0.4 秒。

RS 锁存器:保存 1 bit 的记忆

组合逻辑电路(非门、与门、或门)有个共同点:输出只取决于当前输入。一旦输入消失,输出也就没了。要「记住」状态,就需要带反馈的时序逻辑电路。

最基础的就是 RS 锁存器(SR Latch):用两个非门交叉耦合,每个门的输出接到另一个门的输入。

它的逻辑是:

Q=R∨Q‾,Q‾=S∨Q‾‾Q = \overline{R \lor Q}, \qquad \overline{Q} = \overline{S \lor \overline{Q}}
  • 置位端 S(Set)拉高 → Q 变 1 并保持
  • 复位端 R(Reset)拉高 → Q 变 0 并保持
  • S、R 都为 0 → 维持上一次的状态(这就是「记忆」)

在 Minecraft 里,把两个红石火把交叉接起来就能得到这个结构:火把 A 的输入来自火把 B 的输出,火把 B 的输入来自火把 A 的输出。拉一下 S 或 R 的拉杆,状态被锁住,松手也不会丢。

这一个结构就撑起了很多装置:

用途 说明
密码门 / 机关 按对顺序后锁定开启状态
电梯楼层记忆 记住当前在哪层
状态标志位 记录「是否已触发」
防抖 把抖动输入锁成稳定状态

从非门到锁存器,是数字电路里「组合逻辑 → 时序逻辑」的分水岭。有了记忆,电路才开始有状态。

时钟电路:让电路自己动起来

锁存器需要有人来拉 S/R,那能不能让电路周期性自己触发?可以,用一个非门把输出接回输入,就构成了振荡器——输出不断在 0/1 之间翻转,这就是时钟信号。

实际搭建时,通常用中继器环来做:把若干个中继器首尾相接成环,信号绕圈传播,每绕一圈就产生一个脉冲。调整中继器数量和档位,就得到不同频率的时钟。

时钟是时序电路的心跳:

  • 驱动重复动作(自动农场、自动收割)
  • 作为计数器的节拍
  • 给状态机提供步进信号

边沿、脉冲与检测

最后补一组概念,它们是把模拟世界里的「变化」转成数字逻辑能处理的「事件」的关键:

概念 含义
上升沿 信号从 0 变 1 的瞬间
下降沿 信号从 1 变 0 的瞬间
正脉冲 0 → 1 → 0 的一次短暂拉高
负脉冲 1 → 0 → 1 的一次短暂拉低
相位 两个信号「同相 / 反相」的关系,反相记作 !

边沿检测的典型实现是:让信号走两条路径,一条延迟、一条不延迟,再把两者做比较——只有变化的那一瞬间两条路径状态不同,从而输出一个短脉冲。这个「一个脉冲只触发一次」的思想,正是数字电路里边沿触发触发器的基础。

版本特性提醒
BUD(方块更新检测)、零刻脉冲(0-tick)这类进阶技巧,依赖的是游戏未修复的特性。它们能大幅提升效率,但一旦某个版本修掉对应行为,整套装置就会失效。建议每次大版本更新后先小范围验证,再决定是否批量建造。

小结

把红石和数字电路对照起来,一条清晰的脉络就出现了:

text
1
2
3
4
5
6
电源/导线      → 信号与传输
非门           → 基本逻辑运算
中继器         → 缓冲 + 延迟 + 单向
RS 锁存器      → 1 bit 存储(时序逻辑)
时钟电路       → 周期性节拍
边沿/脉冲检测  → 事件提取

红石的价值不在于「游戏里能造机器」,而在于它是一个可以被拆开看的数字系统。当你在课本上再看到非门符号或 RS 锁存器时,脑子里能浮现出那两根交叉的红石火把——抽象概念就落地了。

相关阅读:

  • 当游戏引擎也有竞态条件 —— 从工程视角看红石里的时序与竞态问题
  • 想了解信号在长链路里如何衰减与再生,可以拆解一下中继器的三种模式(锁存、单向、延迟档位)
最后更新于 2026-09-18