FPGA 狀態機的模型之Mealy型狀態機

2021-09-02 05:22:24 字數 1888 閱讀 3756

上篇博文講了:moore型狀態機,這篇博文和上篇博文思路一致,如果讀懂了上篇博文,這篇博文就很容易理解了。

如果乙個狀態機的輸出是由現態和輸入共同決定的,那麼它就是乙個mealy型的狀態機。而按照驅動輸出的數位電路特性,又將mealy型狀態機細分為mealy 1型、mealy 2型、mealy 3型,詳細介紹如下:

(1)mealy 1型

mealy 1型狀態機的原理框圖如下圖1所示:

上上圖可以看出,對於mealy 1型狀態機來說,由於次態和輸出均由現態和輸入通過組合邏輯共同決定,因此可以將狀態轉移部分和輸出生成部分合併成乙個部分,兼併產生狀態機的次態和輸出。

當下一次時鐘有效沿到來時,現態暫存器完成重新整理,次態成為了新的現態,而新的現態和新的輸入共同作用產生新的次態和新的輸出,如此往復。

與moore1型狀態機類似,mealy 1型狀態機的輸出也是直接通過組合邏輯產生的,若想通過新增輸出暫存器來獲得寄存輸出,經過輸出暫存器寄存後的輸出其實對應的是狀態機上乙個狀態與輸入。

(2)mealy 2型

mealy 1型狀態機的缺點也是寄存後的輸出並不對應此時的現態,因此,通過對mealy 1型狀態機的原理結構圖進行一些簡單的修改,可得

mealy 2型狀態機的原理結構框圖,如下圖2:

從上圖可以看出,mealy 2型狀態機重新將狀態轉移部分和輸出生成部分分開,並做成級聯的形式(mealy 1型中二者其實是併聯),所以輸出生成部分便由次態和輸入共同作用產生次態對應的輸出。這樣一來,由於次態和次態決定的輸出在同乙個時鐘週期內變得有效,那麼在下一次時鐘有效邊沿到來時,現態暫存器和輸出暫存器將會同時進行更新,至此,次態變成新的現態,次態決定的輸出變成新的輸出。因此,mealy 2型狀態機中經過暫存器後的輸出是對應於當前狀態的。

(3)mealy 3型

與moore型狀態機類似,mealy 1型和mealy 2型狀態機也各有其優缺點。它們的本質區別仍在於「由狀態產生輸出」這部分的組合邏輯所處的位置。如果像mealy 1型那樣,將該部分邏輯和次態產生邏輯併聯,那麼該組合邏輯的時延將會影響到後續電路的工作;反之,如果像mealy 2型那樣,將該部分邏輯和次態產生邏輯串聯,那麼該組合邏輯的時間延遲將會影響到狀態機自身的工作。因此,為了將mealy 1型和mealy 2型狀態機的缺點最小化、優點最大化,便有了mealy 3型狀態機,它的原理結構框圖如下圖3:

現實中的狀態機,輸出往往不止乙個,通過上圖也可以看出,mealy 3型狀態機就是將那些適合用組合邏輯的輸出採用mealy 1型的方式來處理,而將那些適合使用暫存器的輸出採用mealy 2型的方式處理,因此,mealy 3型狀態機又稱為混合型mealy 狀態機。

最後需要注意的是,至於到底什麼樣的輸出適合採用組合的形式,什麼樣的輸出適合採用寄存的形式,需要根據具體的功能需求來確定,這點與上篇博文的討論不同。因為mealy 1和mealy 2型狀態機在功能上並不完全等價,這是由於mealy型狀態機的輸出除了和當前狀態有關,還與輸入有關。

對於同樣的輸入序列,moore 1、2型狀態機的狀態變遷都是一樣的,因此它們的輸出也是完全一致的;但是對於同樣的輸入序列,mealy 1,2型狀態機的狀態變遷雖然一樣,但是mealy 2型的輸出實際上是由當前的狀態和上一次的輸入得出的,這與mealy 1型的輸出是由當前的狀態和當前的輸入得出的不同。故mealy 1,2之間不可隨意替換。

FPGA 狀態機的模型之Moore型狀態機

上篇博文 狀態機,fpga的靈魂,說到了狀態機的基礎知識,講到了狀態機的組成六要素,工作四要素。這篇博文來講狀態機的模型之moore狀態機,從標題也能看出,狀態機的知識並沒有結束,後面還會提到mealy型狀態機。根據狀態機的輸出與其現態 輸入之間的關係,可將fpga中的狀態機抽象為三種基本模型 mo...

FPGA 狀態機,FPGA的靈魂

有關狀態機的文章,事實上已經寫過很多了,可是即使如此,真的懂了嗎?真的能熟練應用嗎?未必吧。這篇博文 是 fpga之道 認真下看去收貨頗豐!借這個主題來梳理下狀態機 狀態機是fpga設計中一種非常重要 非常根基的設計思想,堪稱fpga的靈魂,貫穿fpga設計的始終。簡單地說,狀態機就是一副描繪著狀態...

FPGA 常用 狀態機

1,單always塊結構 一段式 always posedge clk begin case fsm st0 begin out0 輸出 if case0 fsm st1 狀態轉移 endst1 begin out1 輸出 if case0 fsm st2 狀態轉移 end default endc...