教程:高级红石电路
Connie
发表时间: 2026-01-16 14:12:49
最后更新: 2026-01-16 14:12:49(1小时前)
红石电路与现实生活中的数字电路(基于布尔逻辑代数)基本可以等同看待。如果你熟悉高等教育中的数字电路与初等计算机科学的知识的话,本篇目对你来说将较为容易理解。在阅读此章节前务必熟练掌握基本逻辑门等知识。
计算机
-
在《Minecraft》这款游戏中,有一些系统在计算机科学领域与图灵机相当,允许玩家构建信息处理装置。
-
红石的特性与电力相似,展现出极强的适应性以及迅速的切换能力,这使得红石在Minecraft中成为最具技术含量的组件,超越其他机械系统。
-
模拟现代数字电路时,红石工程的复杂信息处理被简化为一个抽象的多层次结构,从基础到复杂逐步构建。
-
第二层则是二进制逻辑门,它们能处理有限的位数(通常为1至3位),作为混合装置运作。
-
第三层由多个逻辑门组合而成,构成高级组件,专门用于处理模式化的位数据,并将其编码成更易于理解的数字形式,例如数学加法器、组合锁和寄存器等。
-
最后,第四层集成了一系列高级组件,形成功能型计算机系统,能够在无需人工干预的情况下处理任意数据。
算术逻辑
半加器

逻辑门:异或门,蕴含非门
尺寸:5×4×4
- 半加器是电路的一种,它用于计算两个一位二进制数的和。
- 该电路的输出包括一个和位(S),表示两个输入的加和结果。
- 当输入的两个数字均为1时,半加器会生成一个进位1,输出至进位端(C)。
- 此时,进位端(C)的值将重置为0。
- 半加器的设计可以调整,使得进位端(C)具备同相输出功能,但图中展示的结构能够直接应用于全加器的级联中。
全加器(1位)

逻辑门:同或门(2),蕴含门,非门,或门,与门
红石火把数量:16
红石粉数量:32
方块数量:48
尺寸:从上到下6×12×5,包括输入/输出端。
-
该全加器设计用于将两个一位二进制数与前一个加法器的进位(C)相加,从而生成一个和(S)和新的进位输出。
-
若需将其改造为减法器,只要对其中一个二进制输入(无论是第一个还是第二个)进行取反即可实现。
-
当你选择将某个输入作为被减数时,需对该输入进行反转处理,此时输出结果也将是反向的。
-
在实际计算机中,带符号的二进制数的首位通常被称作“标志位”,它决定了该数的正负。
-
如果应用相同的反转逻辑,你可以判断一个数是否为负,或者只是一个较大的正数。
-
在使用上述逻辑门时,请注意输入与输出,这可能会引发你对为何采用反相信号而非同相信号的疑问。
-
此全加器采用了比异或门更具压缩效率的同或门,而蕴含门也相较与门更为紧凑。
-
因此,若想要缩小全加器的体积,就必须使用反相信号。
-
用能够呈现两层方格的符号来表示时,图形会变得相当复杂,因此我们把每一层单独用图表展示,以便于你逐层进行构建。
简易全加器

逻辑门:异或门,与门
红石火把数量:8
红石粉数量:10
中继器数量:2

红石火把数量:9
红石粉数量:12
逻辑门:异或门,与门
- 这个全加器结构更为简洁但有着不可避免的延时(因为使用了中继器)。
- 注意:输入必须为红石原件或将两侧红石线改为红石中继器,见充能。
活塞全加器
1位活塞全加器
2位活塞全加器
红石火把数量:3
黏性活塞数量:2
红石中继器数量:8
红石粉数量:16
方块数量:7
交替全加器

进位输入与输出端对称,这样你能够方便的压缩并组合多个这样的单元。
红石火把数量:14
红石粉数量:15
尺寸:5×6×3
4位加法器

注意!重要性最低的那一位数就是图表中的最左边那位(即“个位”)。这里之所以标明,是为了向你清楚地说明全加器比起半加器的功能优势——半加器无法处理比其低一数位的进位。如果你想依据一般的使用习惯把个位放在右边,那么将图表左右镜像处理即可。
注:由于红石线的新特性,本结构的个位部分的半加器已经失效!为了应急,你可以先使用全加器,只要不使用C输入端即可。
逻辑门:同或门(7),蕴含门(4),非门(4),或门(3),与门(3)
红石火把数量:56
红石粉数量:108
方块数量:164
尺寸:23×12×5
这个加法器能够将两个四位二进制数相加(A与B),产生每一位数的和(S)与整个和的进位(C,相当于第五位)。和的位数顺序与加数的顺序相同,这也就是说,最左侧的S是和的最低位。这个4位加法器仅仅是一个全加器链的示例,你可以通过同样的构造来建造具有更多位数加法或减法能力的计算单元。
逻辑单元(2-4译码器)
- 在电路中,有时候你可能需要建造能够依据输入来选择输出的逻辑单元。这样的逻辑单元能够用于更复杂的电路中,比如说算术逻辑单元(ALU)。下面介绍的逻辑单元又被称为2-4译码器。
- 这是一个2位逻辑单元,依输入不同可以有4种状态。

- 输出端在最上面一行,依照11、00、01、10的顺序排列(输入端顺序为上侧的是第一位,下侧第二位)。
- 下面是另一种采用格雷码的简化版本。输出端为顶部那行末端的红石火把。本设计能够被扩展到任意位,但会受到电路延时的限制。相对地,输出排序为11、01、00、10。

二进制转换为八进制(3-8译码器)
- 该装置由多组逻辑门组成,共分为八个部分。
- 当这些部分组合在一起时,能够将一个三位的二进制输入转化为一位的八进制输出,功能上等同于三到八的译码器。
- 它的最大占地范围仅为5×5×3,因此具有良好的适应性。
- 右侧图示中的每个部分都可以与共同的输入源连接,但建议在每个输入端添加一个反相器,以保持该电路在与其他电路合作时的独立性。
- 某些部分能用作三态缓冲器,或至少可以方便地进行改造以实现三态缓冲功能。
- 下表详细对应了右上图中八个部分的功能。
| 对应八进制数字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 尺寸 | 5×3×2 | 5×3×3 | 5×5×3 | 5×5×3 | 5×3×3 | 5×4×3 | 5×5×3 | 5×5×3 |
| 红石火把数量 | 1 | 2 | 2 | 3 | 2 | 3 | 3 | 4 |
| 红石粉数量 | 7 | 7 | 12 | 10 | 7 | 7 | 10 | 10 |
二进制转换为十进制/十六进制(4-10或4-16译码器)
- 该装置由一系列逻辑门组合而成,通常划分为10或16个部分。
- 当这些部分结合在一起时,能够将一个4位二进制数的输入转化为一位的十进制或十六进制数输出(以未编码的形式呈现,因此输出端的数量与所选的进制相同),其功能相当于4-10或4-16的译码器。
- 此外,其最大占地面积仅为3×5×2,显示出其极强的适配能力。
- 与前面讨论的3-8译码器相似,右侧图示中的每一个部分都可以将输入端连接到一个共同的输入源,然而建议在每个输入端加装一个反相器,以确保该电路在与其他电路协作时保持输入端的独立性。
- 在右侧图示的右下角,包含了一个描述性质的图例,图中列出的16个部分的输入端依序以逆时针方向排列。
| 对应十进制/十六进制数字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 尺寸 | 3×3×2 | 3×4×2 | 3×4×2 | 3×4×2 | 3×4×2 | 3×5×2 | 3×5×2 | 3×5×2 | 3×4×2 | 3×5×2 | 3×5×2 | 3×5×2 | 3×5×2 | 3×5×2 | 3×5×2 | 3×5×2 |
| 红石火把数量 | 1 | 2 | 2 | 3 | 2 | 3 | 3 | 4 | 2 | 3 | 3 | 4 | 3 | 4 | 4 | 5 |
| 红石粉数量 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
十六进制转换为二进制(16-4编码器)
-
在Minecraft中,您可以将一个十六进制信号转换为四位的二进制信号。
-
与之前的方法不同,这里只需要使用或门,其他逻辑门无需使用。
-
因此,您只需确定输入端口与输出端的对应关系,随后通过红石线进行连接。
-
为了避免输入端信号之间的干扰,您需要在输出端之前添加两个连续的非门或中继器进行隔离。
-
在实际运用该信号之前,请务必进行测试,以确保一切正常。
- 如果您希望构建一个八进制转二进制的8-3编码器,只需从现有装置中去除第四位输出,并保留前八位输入即可。
- 此外,以下是十六进制与其对应的二进制值的列表。
| 十六进制数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 第4位 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 第3位 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
| 第2位 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
| 第1位 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
示例-顺序敏感的3位十进制数密码锁
- 右侧的示例采用了OR(符号为>=1)、异或门 (符号为=)、 RS或非锁存器(符号为SR)和一些延迟器(符号为dt*)。依个人喜好,我采用了同或门设计方案C。
- 右侧的例子采用了4位设计,因而你可以设置一个十六进制的密码。由于状态(0)十六进制 == (0000)二进制无法激活系统,故你只可以设置15种密码(1到F,或0到E)。如果你希望加入第16种,那么请自行编辑电路添加第五位输入。
- 接下来我们将规定(0)十六进制 为 (1111)二进制,至于[1,9]区间内的数请查看上一节末尾的表格。这样,我们就可以使用十进制数字作为密码的外在显示了。我们必须把十个按钮分配到对应的二进制数据上,请看右图的前两列:第一列代表表示为十进制(当然十六进制在[0,9]区间内和十进制的表示一样)的输入码;第二列对应着每一个输入码的二进制。当然你也可以添加更多的按钮来对应区间[A,E],我只是为了讲解方便而把那几位去除了。方框/b1\输出第一位,方框/b2\输出第二位,依此类推。
- 接下来你可以看到用Key[i](i=1,2,3)来表示的密码设置区。这几个Key[i]方框的第一个输出均为第一位,第二个输出为第二位,依此类推。你可以在每个Key[i]处用拉杆设置二进制加密型的密码。请参考上一节末尾的表格,还有(0)十六进制:= (1111)二进制的特殊对应。如果我们用按钮输入了第一位,装置会与这一位对应的四位二进制数逐位比较。一旦每一位都正确,才会输出置位信号到下一级。
- 因此我们要实现逻辑运算(((b1=b1 & b2=b2) & b3=b3) & b4=b4) =: (b*=b*),在Minecraft中至少需要4个与门。这样我们可以把识别通过的信号存到RS锁存器/A\中。Key[2]和Key[3]具有同样的验证比较过程。
- 我们必须确认如果第二输入位是错的话状态会被清除。因此我们采用了一个按键触发事件(--/b1 OR b2 OR b3 OR b4\--/dt-\--/dt-\--)。请在图中找到包括两个"dt-"的那三个方框。工作原理是:任意键按下就会产生信号,然后再加上一个小延迟。为了在第二个输入位错误时复位/A\,我们进行逻辑运算(有键按下) “与” (非B),即“任何键按下且第二位输入错误”。这样如果我们正输入第一位,/A\不会被复位;如果/A\已经被激活,那么只有/A\应当被复位。因此在第二位输入错误而且第一位已经输入时继续逻辑运算(B* & A) =: (AB*),这样/AB*\就复位了记忆单元/A\。为了避免如果按按钮时间过长从而使/A\错误地被复位的问题,我们加入了主延迟元件/dt+\。/AB*\后面的非门是为了人工复位而设计的(例如可以连接一个压力板)。
- 然后,把整个复位电路复制到Key[2]上去,除了人工复位端由(非A)引出,自动复位端(即错误输入后的)从C引出。从A接来的人工复位阻止在第一位未输入前B就被激活。所以这一系列线路保证了本装置密码的顺序敏感特性。
- 问题是为什么我们要使用短延迟方块/dt-\。如果/A\激活后,第二位也成功输入,那么B激活,(非B)变为低电平。但当(非B)仍然为高电平时,按键触发事件也被激活,A会被错误地复位——但这一切没有发生。/dt-\方块的应用使得在按键触发事件被激活之前/B\可以有充足的时间作出反应。
- 对于/C\来说,只需要引自B的人工复位端即可以防止C在B激活之前被错误激活,同时也能保证在人工复位端复位/A\与/B\时,/C\也可以被复位。
优缺点:
| + | 你可以在不改变电路的前提下改变每一位密码。 |
| + | 你可以依据同样原理扩展比较模块电路以使密码锁支持更多位数的密码。 |
| + | 你可以通过将除了最后一位之外的任何位为(0000)二进制来减少密码位数。 |
| + | 你可以将最后一位设为(0000)二进制来直接使门打开。 |
| - | 想要支持越多的位数,输入栏就越长。你可以选择被编码的按键以保持电路的小规模——但要小心,事实上输入编码电路比起由于位数增加而使背后巨大的装置规模变得更大来说,是微不足道的。 |
严格来说不算缺点的缺点:本电路中当密码是311时可能会出现刚输入到第二位,密码锁就打开了。为了防止这种情况,用中继器在(非A)与(复位B)之间加一个延迟即可。
如果你修复了这一点,电路会因密码长度差异而具有以下的加密强度:( ||位数|| = 2n-1,密码组合数:||位数||长度 )
| 长度 | 1位数 | 2位数 | 3位数 | 4位数 | 5位数 |
|---|---|---|---|---|---|
| 2 位 | 3 | 9 | 27 | 81 | 243 |
| 3 位 | 7 | 49 | 343 | 2401 | 16807 |
| 4 位 | 15 | 225 | 3375 | 50625 | 759375 |
| 5 位 | 31 | 961 | 29791 | 923521 | 28629151 |
杂项
信号规整器
- 信号规整器的功能是计算多个输入端口中“1”的总数量。
- 它会根据端口的优先级在多个输出端口上分配相同数量的“1”。
- 不同于常规信号计数器,信号规整器不以特定进制形式输出其结果。
- 由于信号规整器的输出顺序取决于端口的优先级,而非输入的顺序,因此输入的排列信息会被忽略。
- 因此,信号规整器通常被用于观察和分析多个输入中“1”的数量,而不适用于保留输入的排列结构。
3位信号规整器的真值表:
| A | B | C | 1 | 2 | 3 |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 1 | 0 | 0 |
| 0 | 1 | 0 | 1 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 | 0 |
| 1 | 1 | 0 | 1 | 1 | 0 |
| 0 | 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 1 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 1 | 1 |
数电版本


评论({{ count }})条
{{ item.user_detail["nick_name"] }}
{{ item.user_detail["title"] }}
暂无内容