HDLBits/自用/Fsm部分/p2
2023-08-23 15:33 作者:土豆土豆2333333 | 我要投稿
蓄水池

四種狀態(tài)(對應(yīng)表格中四種狀態(tài))

代碼為:
可見這種方法較為繁瑣,而且不便于理解。下面是官方給出的解法,共有6個狀態(tài),對應(yīng)每種變化,這樣輸出邏輯就變得簡單很多,只需要與每種狀態(tài)一一對應(yīng)即可。狀態(tài)轉(zhuǎn)換圖如下:

代碼如下:
2. Lemmings

題目中已給出狀態(tài)轉(zhuǎn)換圖:

代碼也很簡單(三步走):
3. Lemmings2

在上一題基礎(chǔ)上多了一個fall狀態(tài)和aaah輸出。題目中給出了半個狀態(tài)轉(zhuǎn)換圖,但不全,下面是補(bǔ)全的狀態(tài)轉(zhuǎn)換圖:

由此可得代碼:
4. Lemmings3

在上一題的基礎(chǔ)上又多出一個dig操作。完整的狀態(tài)轉(zhuǎn)換圖如下:

代碼:
5. Lemmings4

這里的狀態(tài)轉(zhuǎn)換圖不難實現(xiàn),就是多一個splat狀態(tài),注意進(jìn)入這個狀態(tài)就會一直保持。

具體代碼如下:
這里有幾個注意點:
計數(shù)器中加1的判定條件不能使用ground==0或者當(dāng)前狀態(tài)是否處于fall左右,不然會導(dǎo)致錯一個周期;
一開始一直用reg類型的q,這樣做很可能溢出導(dǎo)致判斷失誤。以后注意如果不是端口而只是內(nèi)部信號,直接用int不容易出錯。reg一般是觸發(fā)器中會用。parameter是參數(shù),不是變量是常量,不可改變,并且一定要賦值。
標(biāo)簽: