我們在講道有限狀態機時要先來說一下甚麼是狀態機,一般在網路上分成三種狀態機 * 一段式狀態機:就是將整個狀態機寫到一個always模塊中去,這種情形用於簡單的狀態機的實現。 * 兩段式狀態機:將輸入和狀態跳轉寫到一個模塊中,將輸出寫到另一個模塊中。 * 三段式狀態機:按照狀態機的結構圖來寫,即輸入部分,狀態跳轉部分和輸出部分。 而這邊討論的有限狀態機就是屬於第三種 **Moore型狀態機** 根據需求,可以確定出4個狀態,分別是①其他狀態,②檢測到AAH,③檢測到BBH,④檢測到CCH,將四種狀態分別命名為idle,aa,bb,cc,那麼可以根據需求畫出如下狀態轉移圖。 ![](https://hackmd.io/_uploads/rkdwVGKo2.png)(圖片來源:網路) **Mealy型狀態機** 將Moore型狀態機轉換為Mealy型狀態機,可以去掉cc狀態,然後得到如下的狀態轉化圖。 ![](https://hackmd.io/_uploads/SJYC4zYjn.png)(圖片來源:網路) Mealy型狀態機的狀態機輸出會比Moore型狀態機來的好。 我們比較常用到的有限狀態機就是Mealy型狀態機,而它的原理簡單來說就是==在幾種有限的狀態內並把狀態編號,用按鈕或其他方式控制是否前往下一個狀態,並在這些狀態內循環。==