當前位置:陽光遊戲站 >

單機圖文攻略

> 鎖存器和觸發器實例進階教程,星界邊境

鎖存器和觸發器實例進階教程,星界邊境

星界邊境 鎖存器和觸發器實例進階教程

星界邊境 鎖存器和觸發器實例進階教程

這篇教程主要是要教大家如何使用鎖存器(Latch),同時也可以讓大家在這個貼子裏展示你所製作的任何時序邏輯電路。而如果你要找基礎的電路教程,可以點我閲讀

鎖存器(Latch)是什麼?

鎖存器是一種非常簡單的存儲單元。一個鎖存器可以存儲一個二進制值(1或0)。

在Starbound裏面使用的是一個D鎖存器,它有2個輸入端和1個輸出端。

星界邊境 鎖存器和觸發器實例進階教程 第2張

D:D代表數據(Data)。你輸入的是什麼決定了輸出的就是什麼。

Enable:Enable決定了D端有沒有連接上輸出端。當Enable為開(1),輸出的值就等於輸入的值。當Enable為關(0),輸出的值就被固定在它之前的狀態了,此時D端不再起任何作用。

如果你願意,你可以把Enable想象為像開關一樣在控制D端和輸出端。嚴格來説這是不正確的,但也不失為一個不錯的比喻。

(譯者注:記住這個結論!這是基礎!!)

星界邊境 鎖存器和觸發器實例進階教程 第3張

(圖注:1=閉合,即開狀態,0=打開,即關狀態;為防止混淆,以下翻譯全部稱1為開,0為關——譯者注)

對於那些想要了解技術原理的人,這是D鎖存器在邏輯電路中的實現。C代表控制(Control),也就是Enable。

還有兩個輸出端,考慮到Starbound只有正輸出端Q,你並不需要去理解這張圖之後再去使用鎖存器。

(譯者注:【Q】和【Q非】輸出是互補關係,一個是1,另一個一定是0,所以只需要一個輸出端就行)

星界邊境 鎖存器和觸發器實例進階教程 第4張

我知道你一定在想:“這真是極好的!但是我到底該怎麼去用這玩意?”

好問題!鎖存器有很多的用處,這裏就有幾個基礎的例子。


鎖定陷阱 Locking Trap

鎖存器最簡單也是最常用的用途就是“鎖住”某樣東西,我用一個陷阱來當例子。

如果我走上一個壓力板,Enable端和D端同時被激活,同時陷阱也被激活。當我從壓力板上下來的時候,陷阱還是會繼續保持激活狀態——這是因為Enable端和D端同時被關掉了,輸出端被固定在激活狀態。(這就是鎖住了,譯者注)

重置(reset)按鈕用於關閉陷阱。按鈕被連接到Enable端,可以使輸出端的狀態變為關。

如果你用一個按鈕去代替壓力板,這就是一個偷懶的辦法來製造一個開關裝置,而不使用控制枱。之後我們會看到,如何來製造一個一鍵切換開關。

星界邊境 鎖存器和觸發器實例進階教程 第5張

振盪器(2-clock[2週期])

這個電路使用一個非門反饋迴路和一個開關(一個Impervium控制枱)來創建一個振盪器。(注意不是壓力板,這是個控制枱console,如果你還不能造這個東西,完全可以其他控制枱代替,比如猴子的電腦,而眾所周知,在SB中console其實就是一個開關,譯者注)

當開關打開的時候,輸入端將會在開與關之間快速閃爍。當開關關閉的時候,輸出端狀態就固定住了。你可以用這個來讓燈閃爍,製造一個偽隨機擲硬幣的裝置,等等…

你可以把奇數個非門串聯在一起,創建一個反饋延遲,來減緩震盪頻率。

如果你想更多瞭解時鐘信號,可以看後面關於時鐘説明。

星界邊境 鎖存器和觸發器實例進階教程 第6張

D觸發器 D-Flip-flop

鎖存器屬於電平敏感,意思就是隻要當Enable端為打開狀態的時候,輸出就可以被改變。

而觸發器則是邊沿敏感,意思就是當時鍾信號改變的時候,輸出狀態改變(在時鐘輸入的上升沿和下降沿,取決於類型)。這對於製作狀態機、計數器和寄存器非常有用。

(譯者注:為了讓大家不被大片的專有名詞給嚇着了,我來解釋一下:數字電路中把低電平定義為0,高電平定義為1,從0到1的過程被稱為上升沿,反之被稱為下降沿。具體來説,一個按鈕從未激活到激活的過程,就叫上升沿,反之叫下降沿。

如下所示的觸發器就是一個下降沿觸發的D觸發器。當Clock端(時鐘信號)從開變為關的時候,輸出狀態將會改變。這大概是最簡單的觸發器了,只需要兩個鎖存器和一個非門。注意clock端連接着兩個點。

下一個例子裏面我們將會用到這個觸發器。

(譯者補充:作者在這個例子用的是開關,效果是,若且唯若clock端的開關由開狀態變為關狀態時,輸出端狀態才會改變,並且只會變成和D端相同的狀態。

這裏有個衍生:如果你把開關換成2個壓力板,會發現結果變得直觀而且很有意思!當從右往左走經過2個壓力板的時候,輸出保持為開,然後再從從左往右返回的時候,輸出變為關。一個實用的應用就是,進門自動開門/燈,出門自動關門/燈。如果要改變順序的話,只要簡單把兩個壓力板的連接反一下就行。

用按鈕操縱的開關 Pushbutton Toggle

雖然Impervium控制枱(Impervium consoles)好棒好棒的,不過有時候你會因為某些原因而想要用按鈕來開關某樣東西,但是按鈕發射的是一個脈衝信號,那我們怎麼用按鈕來製作一個開關裝置呢?

有一個辦法就是使用我們剛才介紹過的觸發器,不同的是還要加入一個我們之前在振盪器中用過的非門。

這樣就創建了一個狀態機,其輸出狀態與它之前的狀態相反:

Q[n] = NOT( Q[n-1] )

按鈕就是這個狀態機的時鐘信號,每按一下按鈕就會引入一個脈衝信號,用來更新狀態。

如果我們使用一個鎖存器,在有按鈕脈衝的時候,輸出狀態會改變好幾次。由於觸發器是邊沿敏感,只有在每次脈衝的時候才會更新,所以我們需要的是一個觸發器,而不是一個鎖存器。

交易室 Trading Room

Eht和我用按鈕開關做了一個交易室。Starbound目前還沒有用於交易機制,所以我想,製作一個不依賴於信譽系統的交易方式會很有意思。下面是它的工作原理:

1. 兩個玩家從各自的一邊進入房間,然後關上他們身後的門。門只能從內側來控制。

2. 左邊的玩家在上面,而右邊的玩家在下面,兩個人都各自在兩扇門之間扔下一個物品。當另一個玩家也已經扔下他的物品的時候,你需要站到壓力板上,表示你已經做好準備來完成交易了。

3. 兩個玩家都需要站在各自的壓力板上,以便讓站在上方的玩家按一下那個按鈕,這會切換所有門的狀態(使用了2個切換狀態機)。這樣就可以防止你接觸到你所扔下的物品,同時讓你可以去撿起對方玩家扔下的物品。兩個玩家交換了位置,從另一個玩家的那扇門出去。

星界邊境 鎖存器和觸發器實例進階教程 第7張

關於振盪器(亦稱時鐘)的説明

你可以用不同於之前的鎖存器時鐘的方法來創建時鐘。

一個相當緩慢的時鐘就是定時器元件(遊戲自帶的Timer,譯者注),它大約每秒閃爍一次。你可以在輸入端輸入1來凍結它的狀態。

最快的振盪器就是把非門首尾相連。我們可以叫它1-clock[單週期](從Minecraft術語那偷來的),因為每次閃爍之間只有一個非門的延遲。

把奇數個非門串聯在一起,就可以創建3-clock[3週期]、5-clock[5週期],以此類推,很明顯這些會慢3倍和5倍。使用偶數個則會創建一個穩定的迴路,這是沒用的。

Kudos to MeMyselfAnDie for how to control odd-numbered clocks. It hadn't occurred to me in the first version of this note.(恕我無能,這句實在不知道什麼意思……MeMyselfAnDie似乎是官方論壇上的某個人)

如果你想要偶數週期的時鐘,利用與門添加一個使能電路:

如果你想要一個非常非常緩慢而且可控的時鐘,最好的辦法就是用觸發器。把前面的“按鈕開關”裏的按鈕換成計時器(timer),然後把輸出端連接到另一個按鈕開關的clock端,將可以慢兩倍,繼續連接直到最後變得足夠慢。做出來的這個裝置叫做二進制計數器,我已經在這個帖子裏貼出了一個4位二進制計數器。

這個方法遠比慢時鐘更高效,因為隨着門數量的增加,緩慢程度會呈幾何增長,而不是鏈式的線性變化。

  • 文章版權屬於文章作者所有,轉載請註明 https://ygyxz.com/twdj/39kve.html