天天看點

【 FPGA 】狀态機的模型之Mealy型狀态機

上篇博文講了:Moore型狀态機,這篇博文和上篇博文思路一緻,如果讀懂了上篇博文,這篇博文就很容易了解了。

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

(1)Mealy 1型

Mealy 1型狀态機的原理框圖如下圖1所示:

【 FPGA 】狀态機的模型之Mealy型狀态機

上上圖可以看出,對于Mealy 1型狀态機來說,由于次态和輸出均由現态和輸入通過組合邏輯共同決定,是以可以将狀态轉移部分和輸出生成部分合并成一個部分,兼并産生狀态機的次态和輸出。

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

與Moore1型狀态機類似,Mealy 1型狀态機的輸出也是直接通過組合邏輯産生的,若想通過添加輸出寄存器來獲得寄存輸出,經過輸出寄存器寄存後的輸出其實對應的是狀态機上一個狀态與輸入。

(2)Mealy 2型

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

Mealy 2型狀态機的原理結構框圖,如下圖2:

【 FPGA 】狀态機的模型之Mealy型狀态機

從上圖可以看出,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:

【 FPGA 】狀态機的模型之Mealy型狀态機

現實中的狀态機,輸出往往不止一個,通過上圖也可以看出,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之間不可随意替換。

繼續閱讀