狼人殺預(yù)言家怎么玩
2023-03-25
更新時(shí)間:2023-03-25 07:15:01作者:未知
游戲中電路裝置是游戲的特色之一,很多玩家不清楚這些電路裝置有哪些技巧,今天小編為大家?guī)?lái)泰拉瑞亞電路裝置技巧匯總,希望能夠幫助各位玩家。
電路裝置技巧
使用故障邏輯門(mén)建造觸發(fā)器
雖然有各種邏輯門(mén)可以用來(lái)執(zhí)行基本的邏輯操作,如與門(mén)、或門(mén)和非門(mén),但是還有另一個(gè)邏輯設(shè)備可能被一些初學(xué)者忽略或低估:故障邏輯燈(故障邏輯門(mén))。
故障邏輯燈的原理相當(dāng)簡(jiǎn)單,將燈安放在任何邏輯門(mén)(與、或、非、與或、與非、或非)的頂部會(huì)改變它輸出信號(hào)的邏輯,故障邏輯門(mén)輸出信號(hào)的方式是概率性的,這個(gè)概率依故障邏輯門(mén)和故障邏輯燈之間的亮起的邏輯燈和總共的邏輯燈的數(shù)量比值而定。當(dāng)故障邏輯門(mén)和故障邏輯燈之間只有一個(gè)邏輯燈時(shí),故障邏輯門(mén)就會(huì)有0%或100%的概率(也就是是和否)輸出信號(hào)。
因?yàn)檫@個(gè)特性,故障燈門(mén)(從現(xiàn)在起我將這么稱(chēng)呼它,其實(shí)就是一個(gè)故障邏輯門(mén)加一個(gè)故障邏輯燈組成的最基本的部件)充當(dāng)一個(gè)晶體管(也可看做二極管),可以用來(lái)控制信號(hào)的傳輸方向(晶體管或二極管都是單向傳輸信號(hào))。
然而,故障燈門(mén)不僅可以用于簡(jiǎn)單的晶體管,還可以用來(lái)建造觸發(fā)器。
觸發(fā)器是一種能夠存儲(chǔ)狀態(tài)(值)的邏輯設(shè)備。根據(jù)接受到的不同輸入,不同類(lèi)型的觸發(fā)器狀態(tài)改變的也不同。
我將向您展示的第一個(gè)觸發(fā)器是D觸發(fā)器(D即為data):
D觸發(fā)器會(huì)保存一個(gè)特定值并有兩個(gè)輸入端;第一個(gè)輸入端(紅線)是一個(gè)觸發(fā)器,它將觸發(fā)器的存儲(chǔ)值(綠線)設(shè)置為第二個(gè)輸入(藍(lán)線)的當(dāng)前值。這樣,您可以輕松地存儲(chǔ)信息以供之后使用。
這種觸發(fā)器依靠故障邏輯燈門(mén)具有異或門(mén)的性質(zhì)來(lái)工作;兩個(gè)輸入端連接到同一個(gè)邏輯燈,只有當(dāng)輸入的值(0和1)不同時(shí),燈才會(huì)打開(kāi)。在這里,輸入和輸出線都連接到邏輯燈上。當(dāng)這些值不同時(shí)觸發(fā)器將導(dǎo)致輸出值變化并與輸入值相匹配。
D觸發(fā)器很容易平鋪建造,這使得它可以用單個(gè)觸發(fā)端(信號(hào)輸入端)存儲(chǔ)大量信息:
使用故障邏輯門(mén)燈建造SR鎖存器
除D觸發(fā)器之外,另一個(gè)有用的觸發(fā)器裝置是SR鎖存器(用于置位-復(fù)位):
SR鎖存器的功能類(lèi)似于D觸發(fā)器,但它沒(méi)有一個(gè)觸發(fā)器端和一個(gè)值輸入端,而是有兩個(gè)觸發(fā)器輸入端。一個(gè)觸發(fā)器端(藍(lán)線)用來(lái)打開(kāi)鎖存器,而另一個(gè)觸發(fā)器端(紅線)用來(lái)將其關(guān)閉。這是有用的,它使設(shè)備在被激活后不能被關(guān)閉,除非拉動(dòng)重置開(kāi)關(guān)。
與D觸發(fā)器一樣,SR鎖存器也很容易平鋪放置,允許你將一個(gè)重置開(kāi)關(guān)連接到多個(gè)鎖存器上:
使用故障燈門(mén)進(jìn)行移位(遞次電路)
在二進(jìn)制中,移位是一種功能,它可以使一組數(shù)據(jù)中的每一個(gè)位都向左或向右移動(dòng)。例如,左移00011001一位會(huì)產(chǎn)生00110010。注意,在每個(gè)數(shù)字的左邊多加0。這是因?yàn)橐莆坏慕Y(jié)果可能會(huì)根據(jù)可用位而改變。在本教程里,我將會(huì)在下面的示例中使用8位二進(jìn)制數(shù)(也稱(chēng)為一字節(jié))。
如果一個(gè)1在移動(dòng)時(shí)從字節(jié)的任何一邊掉下來(lái)(進(jìn)位),它就會(huì)被舍掉。
在數(shù)學(xué)上講,如果不舍掉1,則向左移動(dòng)一位會(huì)使該數(shù)字乘以2。右移一位則是將它除以2,如果這個(gè)數(shù)字在右邊有一個(gè)1(在這種情況下這個(gè)數(shù)字是奇數(shù)),那么這個(gè)1被舍掉,結(jié)果被四舍五入,所以00000101(十進(jìn)制數(shù)5)右移一位就是00000010(十進(jìn)制數(shù)2)。
這里有一個(gè)左移的例子:
當(dāng)觸發(fā)器端(紅線)被激活時(shí),每個(gè)開(kāi)啟的故障燈門(mén)都會(huì)關(guān)閉自己的邏輯燈,同時(shí)打開(kāi)其左側(cè)的邏輯門(mén)燈。要?jiǎng)?chuàng)造一個(gè)正確的移位,只需把線接到另一端。通過(guò)將最左邊的一個(gè)位連接到最右邊的一個(gè)位,從而使由最左邊掉下來(lái)的“1”不是消失,而是被發(fā)送到這個(gè)字節(jié)的右側(cè)。這就是所謂的向左循環(huán)移位:
同理,也可由此建造向右循環(huán)移位的電路。
使用累加器建造加法器和計(jì)數(shù)器
累加器是一個(gè)非常有用的裝置。它可以存儲(chǔ)插入到其中的任何內(nèi)容的總和。建造累加器要先從上升邊緣檢測(cè)器開(kāi)始:
上升邊緣檢測(cè)器是一種裝置,當(dāng)輸入端從關(guān)閉到開(kāi)啟時(shí)輸出信號(hào)。你也可以通過(guò)倒置邏輯燈來(lái)創(chuàng)建一個(gè)下降邊緣檢測(cè)器,它只在輸入端從打開(kāi)到關(guān)閉時(shí)輸出脈沖。如果你將一系列的下降邊緣檢測(cè)器并排放置并從右向左連接,你將得到一個(gè)累加器:
當(dāng)線路被觸發(fā)時(shí),累加器存儲(chǔ)的值以相應(yīng)位的2的冪值增加。只需將最右邊的電線連接到觸發(fā)器上,就可以將累加器用作計(jì)數(shù)器。您還可以同時(shí)觸發(fā)多條線路,以使累加器可以增加任意值。注意,如果累加器內(nèi)的值超過(guò)11111111(最大值),則會(huì)發(fā)生溢出,導(dǎo)致其發(fā)生重置。
通過(guò)倒置所有的邏輯燈(從而將它們轉(zhuǎn)換為上升邊緣檢測(cè)器),您可以反轉(zhuǎn)累加器,從而使插入到其中的數(shù)據(jù)被減去。
疊加單一的組件以建造更復(fù)雜的裝置
在這之前,我們知道了如何建造各種可以在1bit(八個(gè)數(shù)位)的數(shù)位上運(yùn)行的裝置,從D觸發(fā)器到移位器再到累加器。現(xiàn)在是時(shí)候?qū)⑺鼈兎旁谝黄饋?lái)建造更完善的裝置了。
這可以通過(guò)將裝置堆建在一個(gè)類(lèi)似架子的結(jié)構(gòu)中,以一種非常緊湊的組件組裝方式來(lái)完成。
例如,這里有一個(gè)D觸發(fā)器陣列和一個(gè)累加器連接在一起:
上面一行是D觸發(fā)器陣列,下面一行是累加器,擺放的石磚只是為了幫助連接電路。
請(qǐng)注意,看我是如何使用單線傳輸特定bit的所有信號(hào)的。 我本可以用單獨(dú)一種顏色的電線來(lái)做D觸發(fā)器,而對(duì)累加器中的每一位使用另一種顏色的電線連接,但是將同一根電線連接到每一個(gè)與一個(gè)bit相連接的裝置上要容易得多,也更有整齊性。
更換電線顏色也很重要,就像我對(duì)藍(lán)線和綠線所做的那樣,因?yàn)檫@樣可以讓兩個(gè)bit相互連接而不產(chǎn)生干擾。
最后,注意一下如何使用單獨(dú)的一組紅線連接累加器中的D觸發(fā)器。如果我沒(méi)有這樣做,那么來(lái)自D觸發(fā)器的信號(hào)將激活累加器中的下降邊緣(沿)觸發(fā)器。
無(wú)論如何,這只是一個(gè)如何組合設(shè)備的基本例子。在構(gòu)建更大的設(shè)備堆棧時(shí),請(qǐng)記住我提到的規(guī)則(每比特一根垂直線、交替的電線顏色和單獨(dú)的觸發(fā)器線),因?yàn)槲覍⒃诤竺娴慕坛讨姓故镜拇蠖鄶?shù)設(shè)備都將使用這些規(guī)則。
使用比較器比較數(shù)值
比較器是將兩個(gè)數(shù)值作為輸入,并確定它們是相等的還是一個(gè)值大于另一個(gè)值的裝置(比較大小)。
要建造一個(gè)二進(jìn)制數(shù)值的比較器,需要考慮關(guān)于二進(jìn)制數(shù)的兩個(gè)很明顯但是重要的事實(shí): 1大于0;1在較高的地方(即左邊)的數(shù)值大于1在較低的地方。
知道這些之后, 您可以比較兩個(gè)二進(jìn)制數(shù)字,方法是從左到右掃描它們,并找到第一個(gè)出現(xiàn)在同一位置的兩個(gè)位不匹配的情況。
例如,00110110大于00110010。
如果您查看每個(gè)數(shù)字中最左邊的位,然后一次向右移動(dòng)一位,直到找到不匹配的位為止,你就會(huì)知道,結(jié)果是1的位,就必須是更大的數(shù)字。
如果,在比較數(shù)字時(shí),沒(méi)有匹配過(guò)一對(duì)不同的位,那么你就知道這兩個(gè)數(shù)字是相等的。
下面是使用故障燈門(mén)實(shí)現(xiàn)此過(guò)程的方法:
這個(gè)比較器包含一個(gè)單比特比較(一行) ,它會(huì)觸發(fā)三個(gè)輸出端中的一個(gè),從上到下的輸出端的情況分別是藍(lán)色=綠色、藍(lán)色>綠色和藍(lán)色<綠色。
如果是單獨(dú)比較一個(gè)位,你可以看到藍(lán)線和綠線的位都連接到頂端的一對(duì)故障燈門(mén)。如果位不同,這對(duì)門(mén)將向紅線發(fā)送信號(hào),如果它們相同則向黃線發(fā)送信號(hào),從而繼續(xù)下一位的比較。
如果位不同,則紅線觸發(fā)一對(duì)僅由綠線控制的故障燈門(mén)。 如果綠線連接的位關(guān)閉,則“藍(lán)色>綠色”的輸出端將被觸發(fā),因?yàn)樗{(lán)線連接的位必須打開(kāi)。 但是,如果綠線連接的位打開(kāi),則觸發(fā)“藍(lán)色<綠色”的輸出端。
使用Shift-Add算法來(lái)建造一個(gè)乘法器
現(xiàn)在你已經(jīng)知道了如何使用累加器執(zhí)行二進(jìn)制加法,現(xiàn)在是使用累加器建造乘法器的時(shí)候了。
在二進(jìn)制中,乘法可以通過(guò)兩種方式完成。要執(zhí)行X*Y,只需將X加進(jìn)累加器Y次,也可以使用更有效的方法:Shift -Add。Shift-Add類(lèi)似于用手乘十進(jìn)制數(shù)的長(zhǎng)乘法方法。在豎式乘法中(就是小學(xué)學(xué)的那個(gè)筆算多位數(shù)相乘的方法),把X乘以Y的每一位數(shù)字,然后把每一個(gè)結(jié)果相加在一起即為解(這里不需要多說(shuō))。
類(lèi)似地,使用Shift-Add,掃描Y中的每個(gè)位,對(duì)于每個(gè)數(shù)值為1的位,都會(huì)將X加到累加器中一次。在每一步之后,左移X以便將其值增加到下一個(gè)位置。
Terraria中的乘法器(示例)如下:
正如你所看到的,這是我向你展示的第一個(gè)需要一個(gè)半磚驅(qū)動(dòng)來(lái)操作的裝置。這是因?yàn)镾hift-Add方法需要對(duì)每一位都執(zhí)行一次運(yùn)算,在這種情況下需要執(zhí)行8次。
從上到下的第一行表示Y值,第二行表示X值,底部的一行用來(lái)保存結(jié)果。當(dāng)左下角開(kāi)關(guān)被激活時(shí),半磚驅(qū)動(dòng)開(kāi)啟并激活產(chǎn)生一次移位,并在每個(gè)tick中執(zhí)行一次操作。在每次操作中,通過(guò)右移位從Y值中讀取單個(gè)位。如果來(lái)自Y的一個(gè)位的值為1,則黃線觸發(fā)一組故障燈門(mén),將X的當(dāng)前值發(fā)送到累加器。然后,X值被左移。 請(qǐng)注意,在Y值的右移和X值的左移之間放置了一個(gè)額外的故障燈門(mén)。 這是為了確保X值在被左移之前會(huì)被發(fā)送到累加器。 然后,半磚驅(qū)動(dòng)重復(fù)這8tick的整個(gè)過(guò)程,直至完成乘法運(yùn)算。
使用與門(mén)建造多路復(fù)用器
在數(shù)字電路中,多路復(fù)用器是一種使用二進(jìn)制輸入端從一個(gè)長(zhǎng)值中選擇單個(gè)位的設(shè)備。
例如,可以使用多路復(fù)用器從一系列傳送器中選擇單個(gè)傳送器以建造傳送陣。 多路復(fù)用器也可用于將較小的二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制單數(shù),我將在以后的教程中展示。 這是一個(gè)多路復(fù)用器,它使用3位的輸入端在8個(gè)不同的輸出端之間進(jìn)行選擇:
當(dāng)前,二進(jìn)制輸入端的值為0,所以使最底端的火把處于亮起狀態(tài)。通過(guò)輸入一個(gè)二進(jìn)制數(shù),其相應(yīng)的火把將被多路復(fù)用器觸發(fā)。多路復(fù)用器使用有分叉結(jié)構(gòu)的與門(mén)裝置工作。
每?jī)蓚€(gè)相鄰的垂直的與門(mén),其第一個(gè)與門(mén)最上面的邏輯燈為關(guān)閉狀態(tài),第二個(gè)與門(mén)的邏輯燈為開(kāi)啟狀態(tài)(可見(jiàn)下圖)。 拉動(dòng)這相應(yīng)兩個(gè)與門(mén)所屬的一列的開(kāi)關(guān)會(huì)使這兩個(gè)燈交換狀態(tài)。每個(gè)與門(mén)也從其左邊的列中接收一個(gè)輸入信號(hào)。這樣,你就可以控制信號(hào)從左到右的傳輸。
你可以很容易地復(fù)制和粘貼一個(gè)復(fù)用器,使它能控制的位數(shù)翻倍并且增加輸入端的個(gè)數(shù)。