HDLBits (128) — 旅鼠 1
本題鏈接:
https://hdlbits.01xz.net/wiki/Lemmings1
游戲 Lemmings?涉及一種一種大腦相當(dāng)簡單的小動(dòng)物。 它十分簡單,我們將使用有限狀態(tài)機(jī)對(duì)其進(jìn)行建模。

在 Lemming?的 2D 世界中,旅鼠可以處于以下兩種狀態(tài)之一:向左行走或向右行走。 如果遇到障礙物,它會(huì)切換方向。 特別是,如果旅鼠撞到左邊,它會(huì)向右走。 如果它撞到右邊,它會(huì)向左走。 如果它同時(shí)在兩側(cè)碰撞,它仍然會(huì)切換方向。
?實(shí)現(xiàn)一個(gè)具有兩個(gè)狀態(tài)、兩個(gè)輸入和一個(gè)輸出的 Moore?狀態(tài)機(jī)來模擬這種行為。

另見:Lemmings2、Lemmings3和Lemmings4

題目
提示:


答案

輸出波形


《百戰(zhàn)小旅鼠》(Lemmings,又譯《旅鼠總動(dòng)員》、《瘋狂小旅鼠》)是一個(gè)通過鼠標(biāo)使用道具指引限定數(shù)目的旅鼠到達(dá)目的地的游戲,由 DMA Design(今rockstar north)開發(fā),第一作最初1991年2月14日在Amiga上推出。之后不斷推出各個(gè)平臺(tái)的版本。
有限狀態(tài)機(jī)(Finite-State Machine,F(xiàn)SM),簡稱狀態(tài)機(jī),是表示有限個(gè)狀態(tài)以及在這些狀態(tài)之間的轉(zhuǎn)移和動(dòng)作等行為的數(shù)學(xué)模型。狀態(tài)機(jī)不僅是一種電路的描述工具,而且也是一種思想方法,在電路設(shè)計(jì)的系統(tǒng)級(jí)和 RTL 級(jí)有著廣泛的應(yīng)用。
Verilog 中狀態(tài)機(jī)主要用于同步時(shí)序邏輯的設(shè)計(jì),能夠在有限個(gè)狀態(tài)之間按一定要求和規(guī)律切換時(shí)序電路的狀態(tài)。狀態(tài)的切換方向不但取決于各個(gè)輸入值,還取決于當(dāng)前所在狀態(tài)。狀態(tài)機(jī)可分為 2 類:Moore 狀態(tài)機(jī)和 Mealy 狀態(tài)機(jī)。
Moore 型狀態(tài)機(jī)
Moore 型狀態(tài)機(jī)的輸出只與當(dāng)前狀態(tài)有關(guān),與當(dāng)前輸入無關(guān)。
輸出會(huì)在一個(gè)完整的時(shí)鐘周期內(nèi)保持穩(wěn)定,即使此時(shí)輸入信號(hào)有變化,輸出也不會(huì)變化。輸入對(duì)輸出的影響要到下一個(gè)時(shí)鐘周期才能反映出來。這也是 Moore 型狀態(tài)機(jī)的一個(gè)重要特點(diǎn):輸入與輸出是隔離開來的。

參考內(nèi)容:
百戰(zhàn)小旅鼠 | 維基百科
https://zh.wikipedia.org/wiki/百戰(zhàn)小旅鼠
6.3 Verilog 狀態(tài)機(jī)?| 菜鳥教程:
https://www.runoob.com/w3cnote/verilog-fsm.html