用 Minecraft 红石入门数字电路:从非门到 RS 锁存器
目录
很多人第一次接触「数字电路」是从课本上的逻辑门符号开始的:一个三角形加个圈就是非门,两条线交叉就是锁存器。符号记住了,但它到底在干什么、为什么需要它,往往一直悬着。
Minecraft 的红石系统提供了一个难得的中间层:它足够简单,你能亲手把每一根导线、每一个逻辑门搭出来;又足够完整,你可以在里面实现从非门到存储器的全部基础电路。这篇文章就借红石,把数字电路的核心概念串一遍。
红石系统 = 一套数字电路
红石可以理解为 Minecraft 的「电力系统」,由三部分组成:
| 数字电路 | 红石对应物 | 作用 |
|---|---|---|
| 电源 / 高电平 | 红石块、拉杆、按钮、红石火把 | 提供信号 |
| 导线 | 红石粉 | 传输信号 |
| 缓冲器 / 延迟线 | 中继器 | 刷新信号、引入延迟、单向导通 |
| 逻辑门 | 红石火把、比较器 | 运算 |
| 输出 / 指示灯 | 红石灯、活塞、门 | 执行动作 |
它和真实数字电路最大的区别是:红石的「电平」不是只有 0 和 1。
信号强度:不是二值,而是 0–15
电源(火把、拉杆、按钮)输出满级信号 15,红石粉每传播一格衰减 1 级:
|
|
也就是说,单股红石线最长只能传 15 格,到 0 就彻底失效。想继续往前传,必须在中间插入中继器把信号重新拉回 15。
这个特性和真实电路里的信号衰减、网络里的传输距离限制是一回事:任何长距离链路都需要中继/放大。这也解释了为什么红石电路里「中继器」出现频率极高——它既是逻辑元件,也是物理上的信号再生器。
电压类比:可以把 0–15 看成模拟电压等级,而逻辑门真正读取的只是「是否大于 0」。这也正是数字电路从模拟信号里提取 0/1 的过程。
第一个逻辑门:红石火把就是非门
数字电路里最基本的门是非门(NOT):输入 0 输出 1,输入 1 输出 0。
红石火把默认是点亮的(输出 15)。当它附着的方块被供能时,火把会熄灭——输出从 1 变成 0。这恰好就是非门的真值表:
| 输入 A | 输出 Q = ¬A |
|---|---|
| 0 | 1 |
| 1 | 0 |
在电路图里,一个非门就是一个三角形加一个小圆圈;在 Minecraft 里,它就是「一根红石火把 + 一个被供能的方块」。符号和实体第一次对上了。
有了非门,就可以继续往下搭:
- 非门串联 → 缓冲(两次取反还原,但引入了延迟)
- 非门并联取最大 → 或门 NOR 基础
- 多条输入接到同一个火把附着方块 → 只要有一条供能,火把就熄灭
中继器:缓冲器 + 延迟元件 + 二极管
中继器是红石里最被低估的元件,它同时承担了三个数字电路里独立存在的功能:
- 信号再生:输出固定 15,抵消衰减(缓冲器)
- 单向导通:信号只能从前端流向后端,反向不通(二极管)
- 可调延迟:右键切换 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):用两个非门交叉耦合,每个门的输出接到另一个门的输入。
它的逻辑是:
- 置位端 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 的一次短暂拉低 |
| 相位 | 两个信号「同相 / 反相」的关系,反相记作 ! |
边沿检测的典型实现是:让信号走两条路径,一条延迟、一条不延迟,再把两者做比较——只有变化的那一瞬间两条路径状态不同,从而输出一个短脉冲。这个「一个脉冲只触发一次」的思想,正是数字电路里边沿触发触发器的基础。
小结
把红石和数字电路对照起来,一条清晰的脉络就出现了:
|
|
红石的价值不在于「游戏里能造机器」,而在于它是一个可以被拆开看的数字系统。当你在课本上再看到非门符号或 RS 锁存器时,脑子里能浮现出那两根交叉的红石火把——抽象概念就落地了。
相关阅读:
- 当游戏引擎也有竞态条件 —— 从工程视角看红石里的时序与竞态问题
- 想了解信号在长链路里如何衰减与再生,可以拆解一下中继器的三种模式(锁存、单向、延迟档位)