2020/11/12:加了两个例子的链接引用,调整部分文案
2020/10/26:修复了一些错误配图,调整部分文案
本文是一个面向无数电基础红石新手玩家的快速入门教程,注重应用,举例为主,用彩色文字标出重点,并且通过GIF动图直观展示各种电路的运行效果,避开晦涩术语使用,以助理解
除特别说明,所有设计对BE和JE均通用
BE指基岩版我的世界,JE指java版我的世界
■ 导读
本教程面向两类玩家,一类是需要快速学会各种红石电路制作方法的入门玩家.另一类是掌握一定基础,但需要学习进阶电路理论与高级设计的进阶玩家
为照顾不同类型读者,在此为两类玩家提供不同的阅读方法与目标参考:
· 对'入门'玩家的建议
快速浏览,以看图为主
如果你只想知道红石电路怎么做,不想学专业概念术语,请将重心放在文中所有有关红石电路的动图和静图,并忽略所有看不懂的文字内容
文中提供了大量红石电路的图片,你可以在游戏中复现它们.你只需要明白这些红石电路有什么用,并且知道这些电路怎么做就行.最好能记住电路叫什么名字
当然,如果你能理解并学会所有内容的话,那就更好了!
本教程重点在于逻辑电路原理,而不是红石元件的性质.但如果你对教程里红石元件的各种性质有比较大的困惑,甚至阻碍了对逻辑电路原理的理解.可以先看'剖析MC系列':
剖析MC系列讨论了各种红石元件的特性,这也是它们的侧重点,本教程主要侧重红石数电
· 对'进阶'玩家的建议
将所有内容完整看一遍
02,03,04节讨论了有关逻辑门,触发器和锁存器的一些专业概念与术语
05节介绍了各种可利用的红石特性
05节介绍了用于辅助红石电路建造,快速复制粘贴电路的工具
07节展示了一些实用的红石逻辑门,触发器方案
06节讨论了逻辑表达式,及相关的简化技巧
· 关于本部分
本部分是《红石逻辑电路: 从入门到精通》的第一部分,主要讨论红石逻辑电路基础元件的知识和理论,无前置知识
本教程使用OCDHD+资源包.可在下链接了解该资源包
https://www.mcbbs.net/thread-681806-1-1.html
■ 目录索引
· · · 第一章 · · ·
00 · 第一章导读与目录索引
■ 导读 ■ 目录索引
01 · 为什么要了解逻辑电路,有什么用?
■ 逻辑电路在各个红石领域中的用途
02 · 在MC中的基础逻辑门元件方案
■ 逻辑门有什么用 ■ 与门,或门,非门 ■ 异或门,同或门 ■ 用逻辑门设计电路
03 · 在MC中的基础触发器与锁存器元件方案
■ 触发方式 ■ T触发器 ■ RS锁存器 ■ D锁存器 ■ 用触发器和锁存器设计电路
04 · 电路符号,模块化
■ 逻辑门符号 ■ 触发器符号 ■ 模块化
05 · 红石电路特有的性质(特性),红石设计辅助工具
■ 红石线的线或 ■ 信号强度 ■ 信号衰减 ■ 活塞,半砖,投掷器 ■ 无延迟电路 ■ bud ■ tick流水 ■ 红石设计辅助工具
06 · 逻辑表达式,真值表
■ 逻辑运算符号 ■ 逻辑表达式与公式化简 ■ 真值表
07 · [附页] 布线分类,常用红石基础电路模块大全
■ 布线分类 ■ 与,或,非门 ■ 异或门 ■ 同或门 ■ D锁存器/触发器 ■ RS锁存器 ■ T锁存器 ■ 无延迟元件
在现实生活中,逻辑电路与我们息息相关,我们熟知的产品:电脑,手机,数字电视,数码相机,这些数字产品都离不开逻辑电路的原理
在MC中,我们同样离不开逻辑电路,各种红石电路设计都与逻辑电路原理紧密相连,在MC的红石数字电路中,我们会用到所谓的'逻辑电路'来设计一个数字电路系统
逻辑电路由各种基础的'逻辑门','触发器'和'锁存器'以及将他们相连接的导线组成,他们各有不同功能.将这些功能不同的器件进行组合,我们就可以得到任何所需功能的电路
■ 逻辑电路在各个红石领域中的用途
逻辑电路与红石密不可分,下图就展示了逻辑电路在红石各个领域的用途:
对于红石数字电路和红石计算机玩家来说,本教程会是一个基础入门教程,但同时对其他领域的玩家来说,也是一个值得学习的拓展进阶教程,因为逻辑电路在红石电路里几乎无所不在
相较其他的红石逻辑电路教程,本教程用图说话,简洁明了,教程里的所有基础红石元件都是我找到的(在相对常见的用途上)最优秀设计
这节将展示MC中的各种红石逻辑门,通过动图可以直观看到它们的功能
■ 逻辑门有什么用
举个例子,你应该在生活中会注意到有些灯是由两个开关同时进行控制的,不管另一个开关是开还是关,拨动一个开关都能控制灯的亮灭.如下图:
这个灯控电路实际上就运用到了我们马上要了解的红石逻辑门'异或门'
接下来我们就来了解一下红石逻辑门怎么做
为了方便理解电路,我们今后约定在图中:
绿色方块表示数据输入 红色方块表示数据输出 粉色方块表示触发或控制输入 橙色方块表示电路本体
在描述中,我们约定:用'1'表示红石信号强度非零.(即红石灯能亮)
用'0'表示红石信号强度为零.(即红石灯不能亮)
(可以将这几个约定复制到记事本里,在阅读下文时方便随时对照参考)
■ 与门,或门,非门
与,或,非门是3个最基础的逻辑门,下面的图就分别展示了它们的功能:
· 与门: 输入都为亮,时输出才亮
· 或门: 只要有一个输入为亮,输出就会亮
· 非门: 输出与输入相反
其中或门电路用到了半砖只能单向传递信号的性质防止了信号的回流.这是一个非常有用的性质,因为它没有延迟
■ 异或门,同或门
异或,同或门比与,或,非门稍复杂一些,它们的电路如下:
· 异或门: 仅两个输入中仅有一个亮起时,输出才会亮
· 同或门: 仅两个输入中仅有一个亮起时,输出才不亮
也可以这样把同或门变成异或门:用红石火把(或者说非门)反转异或门的输出就能把异或门变成同或门,
附页补充了其它逻辑门设计
■ 用逻辑门设计电路
现在让我们来用逻辑门做几个电路,以熟悉它的使用
· 例: 三控开关
描述:用3个开关同时控制一个灯,相当于一个3输入的异或门
· 例: 1010判断器
描述:当电路输入为1010时候,输出为1,否则为0
· 例: 数据选择器
描述:这个数据选择器有A和B共2个数据输入和1个数据选择.当数据选择为1时,这个电路将输出A,否则输出B
如果说逻辑门主要是用来实现经典逻辑的,那么触发器与锁存器就是主要用来实现时态逻辑的
· 触发器和锁存器与逻辑门的区别
对于单个逻辑门,其输出完全取决于当下的输入,而不取决于曾经的输入
但对于触发器和锁存器,其输出不仅取决于输入,还取决于其内部的状态.触发器和锁存器可以存储状态
过去的输入会改变触发器和锁存器的内部状态,而触发器和锁存器的输出会被内部状态影响(一般就是直接根据它的内部状态产生输出)
所以对于触发器和锁存器,以前的输入会影响到现在的输出,由此沟通了过去,现在和未来
■ 触发方式
我们先来讨论边沿触发方式.边沿触发分上升沿触发,下降沿触发和双边沿触发
上升沿和下降沿分别对应信号变化的两个相反的过程:
· 上升沿: 信号从'0'变为'1'的过程
· 下降沿: 信号从'1'变为'0'的过程
· 双边沿: 上升沿和下降沿的统称
直观的例子如下图:
如果按下按钮的瞬间,红石灯闪一下,就说这个红石灯是上升沿触发的
如果按钮按下后,按钮回弹的瞬间,红石灯才闪,就说这个红石灯是下降沿触发的
如果按下瞬间,回弹瞬间都会闪一下,就说这个红石灯是双边沿触发的
除了边沿触发方式还有别的触发方式,在这里一起总结它们:
· 边沿触发方式: 在信号跳变的一瞬间触发
· 电平触发方式: 在信号为'1'的时间内,电路保持触发,为'0'时保持不触发.这叫高电平触发(这句话的'1'和'0'互换后同样也可以成立,叫低电平触发)
· 其它触发方式: 当然也可以有其它触发方式,只要电路需要某种其它的触发方式.但这些其它触发方式可能相对特殊,运用不广.只需要在用某个元件时能明白它的触发方式就行了!
■ T触发器
T触发器能实现按钮变拉杆的效果(按一下亮,再按一下灭),它的作用如下图:
· 这个T触发器涉及的红石特性
这个T触发器用到了漏斗的一个特性:漏斗被充能时会锁住里面的物品而不漏出去
所以左边输入让漏斗上方的红石线就会突然熄灭一下,然后漏斗解锁一下,把物品传到对面,然后马上又被锁住了.在游戏里试试就知道是什么情况了
· 这个T触发器的功能
T触发器有'1','0'两种状态,我们根据这个电路输出的判断T触发器状态.输出'1'就说明处于状态'1',输出'1'说明处于状态'0'.按下按钮则会让T触发器状态翻转
翻转的意思就是状态在'1'和'0'之间翻转
比如,当前状态为'1',翻转一下就成'0'了,反之亦然
习惯上,图里T触发器的绿色按钮对应的输入被称为'时钟端'
之所以叫时钟端,因为在现实中它经常被连到时钟电路上
本来T触发器还应该有一个'T端',T端为0时,时钟端触发不能翻转内部状态.为1时,时钟端触发才能翻转内部状态.但为了优化体积,删去了.或者说有个隐含的,永远为1的T端
· 以这个T触发器为例讨论触发器触发方式
T触发器可以有'上升沿T触发器'和'下降沿T触发器'两种子类型
从名字我们就知道它们分别采用了上,下边沿触发的触发方式.'上升沿T触发器'在时钟端上升沿触发,'下降沿T触发器'在时钟端下降沿触发
从动图可以看出,图中的红石T触发器属于'上升沿T触发器'
· 触发器和锁存器的触发方式之分
触发器和锁存器的触发有触发方式之分,可能是上升沿,下降沿,双边沿触发.或者是电平触发等其它触发方式.等下我们要介绍的D锁存器就属于电平触发方式
在下节会详细讨论触发器和锁存器两者之间的区别,有很多人混淆二者!
一般来说,触发器都是边沿触发,锁存器都是电平触发
我们也可以通过调整电路结构可以改变电路的触发方式.在实践中请自行考虑
■ RS锁存器
RS锁存器如下图:
· 这个RS锁存器涉及的红石特性
这个RS锁存器其实就是两个首尾相接的红石火把.事实上,在MC里只要把两个非门元件首尾相接起来,就可以做一个RS锁存器
在现实电路中就不能直接用两个非门首尾相接了!因为现实中不能随意支持所谓的'线或',这个话题后文会进行讨论
并且同时,在两个非门(图中是红石火把)那里放输入按钮,这样按一下就可以转换RS锁存器的状态.然后再把两个非门的输出拉出来,就得到了电路的输出,就像图中那样
· 这个RS锁存器的功能
RS锁存器本身可能处于'1'或者'0'两种状态之一.按下两输入端上的按钮可以改变RS触发器的状态.两按钮中的一个按钮能把RS锁存器状态重置为'1',另一个则相反,重置为'0'
输出端输出了RS锁存器的状态,图中的RS锁存器有两个输出,我们一般只使用其中一个,因为很显然其中一个输出为'1'时,另一个输出必为'0'
所以只需要给其中一个输出加一个非门反转,就能得到另一个输出的值
习惯上,图中两个绿色按钮输入分别可以称为'R端'和'S端'.能分别将RS锁存器状态设置为'0'和'1'
· 正逻辑和负逻辑
图中的RS锁存器有两个输出,它们分别是'正逻辑输出'和'负逻辑输出'.顾名思义,它们是相反的,一般来说我们只会用到其中的一个
如果内部状态为'1',却输出'0',而状态为'0'时输出'1'.就说这个输出是负逻辑的
反之,如果状态为'1'输出'1',状态为'0'时候输出'0'.就说这个输出是正逻辑的
总之正,负逻辑是相反的.有时电路元件会同时提供正,负逻辑两种输出
也正因为正,负逻辑是相反的,所以正逻辑输出加一个非门就能得到负逻辑输出,负逻辑输出同理.它们之间可以相互推导得出,因此一般只需要两者之一,通常用正逻辑,有时用负逻辑
正,负逻辑也不一定就体现在输出上,一些电路输入也会标注是正逻辑或者负逻辑的,如果某个电路输入是负逻辑的,那就相当于这个输入被取反了.就相当于加了个非门
■ D锁存器
D锁存器如下图:
· 这个D锁存器涉及的红石特性
这个方案用到了中继器锁存态的特性.如果你看到中继器上面多出了一个奇怪的小棒子,就说明这个中继器处于锁存态,这个中继器的信号被'锁住了'
当中继器被另一个中继器或者比较器在侧面充能时候,他会进入锁存态并保持住自己的状态(亮或者灭),并且忽略输入端的输入,在游戏里试试就知道是什么情况了
· 这个D锁存器的功能
D锁存器也有'1','0'两状态,我们也同样直接根据输出判断它的状态是什么
按下图中的按钮后,D锁存器的状态会被更新到输入.比如说,如果现在输入是'1',按一下按钮,锁存器状态就变成'1'了,如果输入是'0',按下按钮,锁存器状态就会变成'0'
也就是说,按下那个按钮,D锁存器的状态就会更新为输入的值
图中绿色的拉杆输入习惯上被叫做'D端'
· 以这个D锁存器为例讨论电平触发
先把前文中电平触发的定义搬下来,方便你懒得翻来翻去:
· 电平触发方式: 在信号为'1'的时间内,电路保持触发,为'0'时保持不触发.这叫高电平触发.(这句话的'1'和'0'互换后同样也可以成立,叫低电平触发)
那么我们就来结合实例讨论电平触发
图中的D锁存器就是'电平触发'的.因为在粉输入端'持续输入1'时,图中的中继器被'解锁'了.此时它变回了普通的中继器,是亮是灭全取决于输入.也就是说处于'保持触发'中
而当粉输入端恢复到'持续输入0'时,中继器又进入了锁存态,于是内部状态被锁住了,也就是说处于'保持不触发'中.这就是电平触发方式
如果说边沿触发检测的是信号改变的一瞬间,那么电平触发就是直接检测信号是什么,为'1'时该做什么,为'0'时该做什么
电平触存在一些缺点,所以在现实中的设计时常会避免使用电平触发方式.但在Minecraft中我们一般可以忽略
附页补充了其它触发器设计
■ 用触发器和锁存器设计电路
· 例: 4位暂存器
描述:用D锁存器设计一个4位的暂存器,电路会输入4个1或0.要求按下控制输入端按钮时,电路能将内部的存储数据更新为电路的输入.且能输出内部的存储数据
· 例: 1010时序脉冲发生器
现在我们来做一个'1010时序脉冲发生器',它的功能就是循环输出1,0,1,0,1,0...
描述:电路会提供一个按钮输入,按一下输出1,再按一下输出0,再按一下输出1,以此类推
我们发现T触发器刚好可以直接实现这个功能,所以就直接用T触发器了
♟04丨电路符号,模块化
电路符号是实际电路的抽象符号,为了方便我们设计电路,我们一般需要绘制所谓的'电路图',以抽象符号的形式表示电路的结构
对于较复杂的电路设计,几乎不可能离开电路图(HDL除外!)的帮助,电路图还能导入到某些软件进行仿真测试,为我们的设计检测错误以及优化
下图就是一个电路图的例子,它的功能就是曾经给过的例子'三控开关'
为了理解电路图的含义,我们就要搞懂这些电路符号的意思
■ 逻辑门符号
其中或非门和与非门就是相当于或门和与门前面加了一个非门,图中的小圈就可以理解为一个非门,这个小圈也可以加在某个输入端上,表示这个输入端被取反
同或门符号就是异或门输出那里加个圈,就像与门变与非门那样
需要注意的是,这套符号只是逻辑门符号标准的一种,实际上还有一些其它的标准采用不同的符号表示逻辑门,除此之外,还有一些其它的逻辑门符号标准,可以百度'逻辑门符号'以了解更多