#自學了6week,pre都挂了,做了做P0課下測試,覺得自己對有限狀态機概念的的了解,特别是牽扯到時序還是很模糊;狀态的抽象也不夠熟練;logisim和Verilog的實作也存在問題。網上針對性的logisim題目似乎很少,部落客害怕P0挂了,于是做一做學習筆記,分享一下對于有限狀态機的一些了解,如有不對的地方煩請指正。發現錯誤我也會及時更新。
Logisim中的FSM(P0.L0.Q4)
狀态的抽象:
應當注意目前狀态/次态和輸入是不一樣的,不要混為一談,抽象狀态時需要确定是否包含了所有的狀态且狀态轉移圖沒有邏輯錯誤;如錯誤,則重新選取新的狀态。至于如何用更少的位數抽象出狀态則可能需要多多做題總結了。
比如這道題狀态是已輸入的最後兩位字元(總共四位2進制),Sed【3:0】和S【3:0】,
确定好狀态和輸入就可以利用logisim建構狀态轉移組合邏輯塊了,同理可用logisim建構輸出組合邏輯塊
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZwpmLzAzM4AzM1ITNx0iM3UzMyMjMxEzMxATM5EDMy0iN5ETMzgTMvwFMxkTMwIzLcZTOxEzM4EzLcd2bsJ2Lc12bj5ycn9Gbi52YugTMwIzZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
關于mealy型和Moore型時序問題
有限狀态機的邏輯結構相信大家都很清楚,不清楚的可以網上自尋尋找資源或見cscore教程有限狀态機,但這裡有一點我想要談一談:
輸入和目前狀态對應目前輸出 在一個時間周期内,輸入和目前狀态對應目前輸出。我認為可以想象,輸入信号在一個時鐘周期的開區間是穩定不變的,隻有在時鐘邊沿才算作新的輸出,就相當于外部信号是用寄存器存儲的(Verilog中的reg類型)
筆者太菜了,之前一直沒想明白,導緻建構Mealy型時總是在輸出組合邏輯塊糾結是否再加一個寄存器來穩定輸出,當然我之前想法是錯誤的。