紅石電路與現實生活中的數字電路(基於布爾邏輯代數)基本可以等同看待。如果你熟悉高等教育中的數字電路與初等計算機科學的知識的話,本篇目對你來説將較為容易理解。
計算機[]
在Minecraft中,一些遊戲內的系統在計算機科學中與圖靈機等價——也就是説這樣你可以建構資訊處理的裝置。這些系統包括:水,沙,礦車,活塞與紅石。
這些系統中只有紅石是特別為資訊處理而設計的,主要以紅石訊號的方式來表示。
紅石與電力類似,具有高適應性與較快的切換速度。就像在現實世界中電力取代了蒸汽動力成為高科技的基石一樣,前述的這些特性使紅石力壓其他機械系統,成為Minecraft中最具有科技含量的部分。
現代數字電路與紅石工程在複雜資訊處理的應用時。都被簡化為抽象的從基本到複雜的多層次結構。
第一層是最基本的組件:紅石粉、紅石火炬、紅石中繼器、活塞、按鈕、拉桿與壓力板等所有與紅石訊號相關的方塊。
第二層是二進制邏輯門;他們是能夠處理有限位(一般是1-3位)的混合裝置。
第三層是由邏輯門組合而成的高階組件。這些組件用於處理模式化的位數據,一般能夠將其編碼為更加易讀的數字。例如數學加法器,組合鎖具,寄存器等。
第四層,也是最後一層,是由一系列的高階組件組合成的功能型計算機系統,通常能夠在不需要人工維護的情況下處理任意數據。
算術邏輯[]
半加器[]
邏輯門:異或門,蘊含門
紅石火炬數量:12
紅石粉數量:7
方塊數量:19
尺寸:5X4X4
這個半加器能夠輸出兩個一位二進制數的和。結果位輸出到輸出端S(英文Sum,加法和之意)。如果兩個數字都是1,那麼會產生進位1到輸出端C(Carry,進位之意)(C會變為0)。這個半加器可以被修改為具有同相輸出的C端,但圖中這種結構在全加器鏈中可以照搬。
註:由於紅石線的新特性,本結構已經失效!為了應急,你可以先使用下面的全加器,只要不使用C輸入端即可。
全加器(1位)[]
邏輯門:同或門(2),蘊含門,非門,或門,與門
紅石火炬數量:16
紅石粉數量:32
方塊數量:48
尺寸:從上到下6X12X5,包括輸入/輸出端。
這個全加器能夠將兩個一位二進制數與前一個加法器的進位C相加(事實上是C而不是C,第一層的左下部),產生一個和(S端)和進位(事實上是C而不是C)。
如果要改造為減法器,把其中一個二進制輸入取反(第一個或第二個數)即可。想把第幾個輸入作為被減數,就取反第幾個輸入。如此改造成減法器時,輸出計算結果也是反向的。在現實世界中的計算機裡,二進制帶符號數的第一位(也被稱為「標誌位」)決定了該二進制數的正負,如果你把這個特性(應用相同的反相規則)引入,你就可以得知該數字是負數,還僅僅只是一個較大的數字。
當使用上述的邏輯門時,注意輸入與輸出,你可能會對為什麼這裏使用了如此多的反相訊號而不是同相訊號有疑問。這個全加器使用了比異或門更能實現壓縮的同或門,同理,蘊含門比與門更為壓縮。因此如果你想壓縮全加器的體積,必須使用反相訊號。如果用能夠表示2層方格的符號來表示,圖像將十分複雜,因此我們將每一層都單獨用圖表表示了出來,而且也方便你分層次地建造。
活塞全加器[]
紅石火炬數量:3
黏性活塞數量:2
紅石中繼器數量:8
紅石粉數量:16
方塊數量:7
交替全加器[]
進位輸入與輸出端對稱,這樣你能夠方便的壓縮並組合多個這樣的單元。
紅石火炬數量:14
紅石線數量:15
尺寸:5x6x3
4位加法器[]
注意!重要性最低的那一位數就是圖表中的最左邊那位(即「個位」)。這裏之所以標明,是為了向你清楚地説明全加器比起半加器的功能優勢——半加器無法處理比其低一數位的進位。如果你想依據一般的使用習慣把個位放在右邊,那麼將圖表左右鏡像處理即可。
註:由於紅石線的新特性,本結構的個位部分的半加器已經失效!為了應急,你可以先使用全加器,只要不使用C輸入端即可。
邏輯門:同或門(7),蘊含門(4),非門(4),或門(3),與門(3)
紅石火炬數量:56
紅石粉數量:108
方塊數量:164
尺寸:23X12X5
這個加法器能夠將兩個四位二進制數相加(A與B),產生每一位數的和(S)與整個和的進位(C,相當於第五位)。和的位數順序與加數的順序相同,這也就是説,最左側的S是和的最低位。這個4位加法器僅僅是一個全加器鏈的示例,你可以透過同樣的構造來建造具有更多位數加法或減法能力的計算單元。
邏輯單元(2-4譯碼器)[]
在電路中,有時候你可能需要建造能夠依據輸入來選擇輸出的邏輯單元。這樣的邏輯單元能夠用於更複雜的電路中,比如説算術邏輯單元(ALU)。下面介紹的邏輯單元又被稱為2-4譯碼器。
這是一個2位邏輯單元,依輸入不同可以有4種狀態。
輸出端在最上面一行,依照11、00、01、10的順序排列(輸入端順序為上側的是第一位,下側第二位)。
下面是另一種採用格雷碼的簡化版本。輸出端為頂部那行末端的紅石火炬。本設計能夠被擴展到任意位,但會受到電路延時的限制。相對地,輸出排序為11、01、00、10。
二進制轉換為八進制(3-8譯碼器)[]
這個裝置是一系列邏輯門的組合,分為8部分。當組合起來時能夠將一個3位二進制數輸入轉換為一位八進制數輸出(未編碼狀態,所以輸出端數量與進制數相同),功能等同於3-8譯碼器。由於其最大佔地面積不過5x5x3,所以有很強的適應性。
右圖的每一部分都可以將輸入端連接到共同的輸入源,但建議你在每一個輸入端都加一個反相器以使在該電路與其他電路協同工作時,輸入端保持獨立性。
某些部分也可以作為三態緩衝器使用,或至少你能夠方便地將其改造為三態緩衝器。
下表與右上圖的8部分一一對應。
對應八進制數字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
尺寸 | 5x3x2 | 5x3x3 | 5x5x3 | 5x5x3 | 5X3X3 | 5x4x3 | 5x5x3 | 5x5x3 |
紅石火炬數量 | 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譯碼器。由於其最大佔地面積不過3x5x2,所以有很強的適應性。
與上一章節的3-8譯碼器類似,右圖的每一部分都可以將輸入端連接到共同的輸入源,但建議你在每一個輸入端都加一個反相器以使在該電路與其他電路協同工作時,輸入端保持獨立性。
右圖的右下角是一個説明性質的圖例,圖表中列出的16個部分的輸入端皆按此逆時針順序排列。
對應十進制/十六進制數字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
尺寸 | 3x3x2 | 3x4x2 | 3x4x2 | 3x4x2 | 3x4x2 | 3x5x2 | 3x5x2 | 3x5x2 | 3x4x2 | 3x5x2 | 3x5x2 | 3x5x2 | 3x5x2 | 3x5x2 | 3x5x2 | 3x5x2 |
紅石火炬數量 | 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編碼器)[]
你也可以將一個十六進制訊號轉換為一個4位二進制訊號。與前面不同的是,你不再需要除了或門之外的任何邏輯門了——因此你只需要分析各個輸入端與哪幾個輸出端的對應關係,然後直接用紅石線連過去。需要注意的是,為了防止不同輸入端連線的互相干擾,在最終連到輸出端之前你需要用連續的兩個非門或是中繼器來互相隔離;你也可以選擇在一堆連向某一輸出端的紅石線末端用最簡單的輸入隔離型或門(參見紅石電路條目的或門設計方案B或C)。在最終投入使用前請先測試以保證不會出錯。
下面是十六進制與對應二進制的列表:
十六進制數 | 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 |
如果你想得到一個八進制轉二進制的8-3編碼器,在本裝置基礎上剝離第四位輸出與前八位輸入即可。
示例-順序敏感的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 |
雜項[]
對順序不敏感的密碼門[]
只要特定組合的拉桿拉下或是按鈕按下,門就會打開。 (註:你需要對邏輯門有一定的了解才能理解本裝置的構造)
RS或非密碼鎖[]
把一系列的按鈕連接到RS鎖存器陣列的S端,然後根據需要將這些RS鎖存器的Q端或Q端連入一系列與門的輸入,將與門的輸出接到鐵門那裏。最後,用一個單獨的復位用按鈕連接所有RS鎖存器的R端。RS鎖存器使用的是Q端(需要按按鈕)還是Q端(不需按按鈕)決定了密碼組合。
簡單的例子:
這個例子不具有自動關門功能。如果加入自動復位電路就可以解決這個問題。
與門密碼鎖[]
基於與門的組合鎖僅僅需要拉桿開關、與門和非門。像下面的例子一樣,與門鎖具構造極其簡單,但在複雜系統中不具有動態變化能力,也沒有自動復位裝置。密碼組合取決於拉桿所附着方塊後面是否有火炬附着(起到非門的作用)。你可以像這個例子一樣在最末端的與門處放一個具有最高權限的拉桿,只有拉桿拉下時,輸入正確密碼才能開門。
或門密碼鎖[]
或門密碼鎖就更為簡便了,當所有輸入全部錯誤時,輸出才會無訊號。
由於或門密碼鎖的高壓縮性與快速反應能力,本裝置對於地址解碼器與可尋址儲存器(RAM)極其有用。
設計方案A。密碼由輸入端那裏的紅石火炬決定(圖中為1001)。
你也可以透過把輸入端後的紅石線改成中繼器,從而能夠讓拉桿門都靠在一起。
同理,你可以擴展更多的輸入端。
設計方案B。密碼由藍色區域那裏的反相器決定(圖中為001001)。
N為輸入端數量
K為你希望設定的密碼中「1」的個數
設計方案 | A | B |
---|---|---|
尺寸 | 2N-1x3x1 | Nx6x2 |
紅石火炬數量 | K | 2N-K |
紅石粉數量 | 3N-K-1 | 2.5N + 2K |
訊號分類輸出裝置[]
本裝置構造簡單,實質上只有一個或門與一個與門。
輸入端為右側和下側。這個裝置將輸入訊號分類,兩輸入均為「1」時,上側輸出才為「1」;兩輸入均為「0」,左側輸出才為0,這樣你就可以統計兩個輸入端1與0的個數或持續時間了。 如圖所示,本設計方案十分容易擴展。淺色的方格展示了擴展的方法與輸入、輸出端的位置。依照圖示,將同樣的裝置對應端口接入即可。
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 |
順序敏感的RS或非密碼鎖[]
這種密碼鎖只有當以特定順序按下按鍵時,門才會打開。
註:你需要對邏輯門與MCRS符號有一定的了解才能理解本裝置的構造。
做一系列的按鈕,並只連接其中一個到RS或非鎖。然後把RS或非鎖與第二個按鈕連接至通向另一個RS或非鎖的與門,繼續這個步驟下去直到你連接了所有的按鈕或者對這個鎖滿意了。把最後一個的RS或非鎖和一個來自輸入按鈕的訊號連接到一個單獨的與門,接出到輸出的RS或非鎖。然後把所有剩餘的按鈕都連接到其他RS或非鎖的復位以將重設訊號發送到每一個RS或非鎖。在門旁邊放置一個壓力板可以將電路重設。這種類型的鎖的安全性有嚴格的限制。比如説,不是所有按鈕都能被使用,否則這個系統將無法重設。
對於一個可任意組合大小,使用到了所有的按鈕以及附帶一個錯誤重設系統的鎖,你需要使用不同的方法重設它。為了建造這個電路,將一組按鈕(任何數字,最好在四個以上)連接到一系列對應的中繼器上。進行必要的方向翻轉以便所有的中繼器都能夠被對應的按鈕充能或去能。這些中繼器為一排方塊提供訊號。在方塊的頂部,放一個對應於第一個數字的錯誤按鈕的火炬。用紅石粉將正確的按鈕和對應的RS或鎖存器連接起來,使該按鈕能啟動RS或鎖存器。在連接着錯誤按鈕的火炬上方放上一排方塊,並在頂部放上紅石粉。然後將這些紅石粉連接到第一個RS或鎖存器的復位。只有按下正確的按鈕才能啟動RS或鎖存器,而按下其他的按鈕將會重設整個電路。將RS或鎖存器的輸出連接到與門的一半。在第一排復位火炬之後,放置另一排中繼器和另一排方塊。再把連接錯誤的按鈕的紅石線放在連接正確的按鈕的紅石線下面。將正確的按鈕連接到與門的另一半。只有滿足按對了第一個按鈕啟動第一個RS或鎖存器並且正確地按下第二個按鈕的條件下,與門才會發送一個訊號來啟動第二個RS或鎖存器。同樣,將連接錯誤的按鈕的火炬連接到第二個RS或鎖存器的復位線。註:第二個按鈕也會重設第一個RS或鎖存器,你需要用一個最大延遲的中繼器來延遲重設訊號,以確保在啟動第二個RS或鎖存器之後,重設上一個RS或鎖存器。繼續以相同的方式構建電路,直到達到所需的位數為止。在操作中,當一個按鈕被按下時,每個RS或鎖存器檢查(透過與門)是否為先前RS或鎖存器被啟動,並且這個RS或鎖存器正確的按鈕已被按下。只有當以正確的順序按下按鈕時,訊號才能透過條件RS或鎖存器才能把訊號輸出到最後。將最後一個RS或鎖存器的輸出連接到門上,並將一條線連接到門內的壓力板上,以重設RS或鎖存器。參見下面連結的影片演示。
參考[]
相關頁面[]
|
語言