Shawn·Lay 发表于 2014-5-8 20:30:59

我的世界 minecraft 红石 时序逻辑电路基础(三)

本帖最后由 S8的崛起①号 于 2014-5-8 20:37 编辑

以下内容设计数字电路基础知识,部分从未接触此领域的读者可能难以理解,如感兴趣可自行补课。部分红石电路的规模相当大,从空中鸟瞰全景无法得到清晰的截图,我只能用数字电路图来讲解,希望大家见谅。

1 数字电路时序
为了让逻辑电路进行复杂运算或者流程控制(而不是简单固定的逻辑判断),则需要连续的给逻辑电路输入不同的信号,这些输入信号的节拍就是时序,时序可以是手动产生的,当然大部分时候我们希望它是自动的。以下视频显示了自动时序脉冲是如何产生的。主要原理是红石火炬熄灭后再亮起,以及红石线路传输都有延时,利用这些延时制造循环,便可产生固定时间的时序。



从视频可以看出通过串联数个非门,我们可以获得不同时间长度的延时,将这个串联系统首尾相连(多于4个非门),则可以得到一个稳定的时钟脉冲序列。但是值得注意的是,不论使用多少个非门的串联循环,其得到的时钟脉冲频率基本相同,要获得低频时钟(更高频的脉冲红石电路无法承受,此外在大型电路和超大型电路中存在诸多布线延时,这时使用低频时钟才能保证整个系统的同步性)则需要后面讲到的分频器。

这里另外补充一个视频中没有的高频时钟发生器。此发生器任意接出端都为输出端也都为控制端,由于其频率过高,无法用于大型红石电路,其最主要的用途是连接可承受高频的功能方块。比如弓箭箱(高射速)和音乐盒(高速节拍)。其原理和视频中第一个高频发生器相同,但这里使用了4个红石火炬交替过载,从而保证了高频信号连续输出。

为了让大家看清电路布线我换了个贴图包,所以东西和原版看起来不太一样。

http://static.ggg.cn/bbs/attachment/forum/201301/05/141738v12g61g1kjfdcjfd.jpg.thumb.jpg


2 触发器简介
下面要讲解一个对数字时序电路最为重要的逻辑单元 -- 触发器。简单来说,触发器就是一个简单的一位数据存储器。其作用是在输入端收到有效信号后,其输出端变为被触发状态,此时如果输入端信号消失,输出端可继续维持触发态。在游戏中使用过按钮和压力地板的人都知道两者的信号输出不是恒定的,压力地板在取掉重物后会恢复“0”输出,按钮则更是短时间输出“1”然后自动跳回“0”状态,如果将两者连入一个高电平(既输入信号为“1”)起效的触发器的置“1”端,当从两者发送一次信号后,触发器的正输出端将持续保持输出“1”。之后再怎么改变压力地板和按钮的状态,触发器输出端状态也不会改变,直到将其重置。
http://static.ggg.cn/bbs/attachment/forum/201301/05/150727t94y1tlpbl1l8fhy.gif.thumb.jpg
(a)中的方块为与非门(框中 & 表示“与”,框边的那个小圈表示“非”)
那个表格则是输入输出对应表,SD 为置“1”端,RD 为重置端,Q 为正输出端, Q杠 为反输出端。从输入输出对应表我们可以看到,由“与非门”构成的触发器是低电平有效的,所以当SD端为“0”,RD端为“1”时,正输出端为“1”。


3 基本“或非门”触发器

基本触发器当然也可以由“或非门”构成。由于红石火炬是天然的“或非门”,使得基本“或非门”触发器成为游戏中结构最简单的触发器。值得注意的是“或非门”触发器与“与非门”触发器不同,它是高电平有效的。

http://static.ggg.cn/bbs/attachment/forum/201301/05/141740yinn072lzjppquzi.jpg.thumb.jpg

途中蓝圈中的为“或非门”,黑圈为置“1”端,白圈为重置端(置“0”端),上部淡绿圈为正输出端,下面为负输出端。由于轮换对称性,我们同样也可以互换置“1”和置“0”端,同时也要互换正和负输出端。

基本“或非门”触发器是相当有用的一个逻辑电路单元,因为其结构简单,占地少,我们可以用其构建非同步的大规模或者超大规模的存储单元。

下面用41楼提到的循环时钟,42楼提到的压力地板和基本“或非门”触发器一起做一个简单的来客报警系统。

http://static.ggg.cn/bbs/attachment/forum/201301/05/141739zkjziimpkioi5p6p.jpg.thumb.jpg

橙框内为循环时钟,蓝框内为基本“或非门”触发器,黑圈为置“1端”并连接压力地板,白圈为重置端。将负输出端与标志红石火炬方块的底部相连。开始时,收负输出端的“1”状态抑制,标志火炬熄灭,循环时钟停滞。此时站上压力地板,负输出端变“0”状态,循环时钟解锁,开始循环,标志火炬开始有规律地闪动。此时再走下或踏上压力地板,循环时钟仍继续运行。直至在白圈的重置端输入有效信号,则标志火炬熄灭并停止闪动。

将时钟循环内其他火炬用不透明方块遮住,并在标志火炬砖块旁连接一个单音盒,就做成了一个光音结合的警报器,任何踏上压力地板的东西都会触发警报。要停止警报时,在重置端装一个按钮,按一下系统就重置了。

4 基本“与非门”触发器
由于大部分的数字电路书籍中的触发器多为“与非门”触发器,为了对照仿制,我建议大家在构建大型时序电路时采用结构稍微复杂的“与非门”触发器(而不是“或非门”触发器)。此外外国玩家提供的那张电路图中有一个压缩结构的“与非门”触发器,我建议大家不要使用。原因有两个:一 , 建造大型系统时容易误判各个端口。 二 , 对应步线非常困难(各个端口都挤在一起,根本连不出独立的线来)。本人推荐的结构如下。

http://static.ggg.cn/bbs/attachment/forum/201301/05/141738ttclzbikeutffeyu.jpg.thumb.jpg

蓝圈内为“与非门”,黑白圈为两个控制端,两个绿圈为正和负输出端,具体标定大家可以按自己的需求来调整。

注意:此触发器为低电平有效。




5 带时钟同步端的基本“与非门”触发器
基本触发器在两个控制端的信号发生变化时会立刻发生相应的状态变化。在大型系统中,数个基本触发器相连会产生连续的不受控的多米诺效应,这是我们不愿意见到的。于是我们在基本“与非门”触发器的基础上加上两个“与非门”和时钟CP控制端。只有当CP控制端有有效信号时,触发器的状态才随前两个控制端的输入而变化,否则不变。这样就能靠CP控制端来控制系统的统一步调。

带时钟同步端的基本“与非门”触发器的基本逻辑图如下:

http://static.ggg.cn/bbs/attachment/forum/201301/05/141739n32zu9ar2rrrdnu3.gif

其红石电路结构如图:



注:上面所示的带时钟同步端的基本“与非门”触发器的3个控制端均为高电平有效。

6 维持阻塞 D 触发器
在前面,我提到在大型和超大型红石电路中延时现象是十分严重的,于是我们必须使用很低频率的时钟信号。而在某些红石电路中,时钟信号的有效存在时间是不定的。当时钟信号长时间处于高电平(准确的说应该是“处于有效状态”,但一般来说,我们制造红石点路时,应该尽量保证时钟端为高电平有效。)时,带时钟同步端的基本“与非门”触发器的状态变化又不受控制了。有可能在一个时钟周期(由“0”跳“1”再跳回“0”)内,触发器的状态就变化了好几次。这种现象被称之为触发器的“空翻”。为了避免“空翻”,研究人员设计了维持阻塞D触发器。

这种触发器在一个时钟周期内只能变化一次状态,之后即使CP端仍维持高电平,再改变输入端的状态,触发器的状态不变。只有等到下一个时钟周期的到来,触发器才能再次改变状态。这也就是“阻塞”的含义。

其逻辑结构图如下:

http://static.ggg.cn/bbs/attachment/forum/201301/05/1417392wvlzs8qa83luwkk.gif.thumb.jpg


其红石电路结构如下:

http://static.ggg.cn/bbs/attachment/forum/201301/05/141739slllf6a29l8lltl2.jpg.thumb.jpg

蓝框内均为与非门,其中一个为3输入的。橙色圈内为基本“与非门”触发器(浅绿和黑圈标出了两个输出)。白圈标出了输入端 “D”端。黄圈标出了“CP”端。

本章到这结束~


传送门君又来了~!~
我的世界 minecraft 红石 最基础的教程(一)
我的世界 minecraft 红石 逻辑电路基础(二)

能申精么~~~~~~~~~
@魂澈 可以申精吗!!

Shawn·Lay 发表于 2014-5-8 20:37:54

@魂澈 可以申精吗

ID不重要 发表于 2014-5-8 20:40:55

一樣一句話 轉的吧?

Shawn·Lay 发表于 2014-5-8 20:41:43

十香最萌! 发表于 2014-5-8 20:40
一樣一句話 轉的吧?

你为啥要用繁体
我也擼一把,求別用繁體字啊

対立の私 发表于 2014-5-8 20:46:30

ゞ{无~|~语、》 发表于 2014-5-8 21:04:33

围观

魂澈 发表于 2014-5-9 17:34:42

不知道为什么你的第二个帖子好像挂了=。=很给力!但是MC区好像只能设置一个精品……我的那个置顶已经占了,所以给你加分
页: [1]
查看完整版本: 我的世界 minecraft 红石 时序逻辑电路基础(三)