天天看點

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

上篇博文:狀态機,FPGA的靈魂,說到了狀态機的基礎知識,講到了狀态機的組成六要素,工作四要素。

這篇博文來講狀态機的模型之Moore狀态機,從标題也能看出,狀态機的知識并沒有結束,後面還會提到Mealy型狀态機。

Moore型狀态機

根據狀态機的輸出與其現态、輸入之間的關系,可将FPGA中的狀态機抽象為三種基本模型——Moore、Mealy和Mix,即摩爾型,米利型和混合型。

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

(1)Moore 1型

如下圖1為Moore 1型的原理結構框圖:

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

從上圖可以看出,Moore 1型狀态機的結構可以劃分為兩大部分,狀态轉移部分和輸出生成部分。

上圖的左半部分為狀态轉移部分,輸入和現态(現态寄存器的輸出)通過組合邏輯,共同作用産生了次态,當下一次時鐘有效邊沿到來的時候,現态寄存器發生更新,剛才産生的次态即成為了新的現态,而新的現态和新的輸入共同作用産生新的次态,如此往複。

輸出生成部分如上圖右半部分所示,現态(現态寄存器的輸出)直接通過組合邏輯産生目前的輸出(這點也是Moore狀态機和Mealy狀态最顯著的差別。)有時候,我們不希望将這部分組合邏輯的延遲影響到後續子產品的處理,那麼可以仿照上圖通過添加輸出寄存器來解決這個問題,但是需要特别注意的一點是,由于輸出寄存器的更新需要等到下一次時鐘的有效邊沿,是以,經過輸出寄存器寄存後的輸出其實對應的是上一個狀态。

(2)Moore 2 型

Moore 1 型狀态機的缺點是寄存後的輸出并不對應于此時的現态,這可能為後續子產品的一些處理帶來不便和延遲;除此之外,如果不通過輸出寄存器輸出,組合邏輯中存在着競争,使得輸出即使僅為1bit位寬,有可能會發生險象,如果後續子產品是對電平敏感的,便會導緻錯誤發生,是以通過對Moore 1型狀态機的原理結構框圖進行一些簡單地修改,可得Moore 2型狀态機的原理結構框圖,如下圖2:

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

同樣,Moore 2型狀态機的結構也可以分為兩部分, 一部分是狀态狀态部分,位于上圖的左邊,另一部分是輸出生成部分,位于上圖的右邊。

對比Moore 1型狀态機,可以發現不同點僅僅為輸出生成部分的輸入端由之前的現态(現态寄存器的輸出)變為了次态(有現态和輸入通過組合邏輯産生)。

這樣一來,由于次态和次态決定的輸出在同一個時鐘周期内變得有效,那麼在下一次時鐘有效沿到來時,現态寄存器和輸出寄存器将會同時進行更新,至此,次态變為新的現态,次态決定的輸出變成新的輸出。是以,Moore 2 型狀态機中經過寄存後的輸出是對應于目前狀态的。

(3)Moore 3型

相比于Moore 1型,Moore 2型狀态機也有其自身的缺點,那就是産生輸出的組合邏輯延遲較大,因為它相當于Moore 1型狀态機中産生次态的組合邏輯和産生輸出的組合邏輯的級聯,而這點便會限制狀态機本身的時鐘工作頻率。由此,可見Moore 1型和Moore 2型狀态機各有優缺點。

仔細觀察Moore1和Moore2 型狀态機的原理結構框圖,可以發現,它們的本質差別就是“由狀态産生輸出”這部分的組合邏輯所處的位置。如果像Moore 1型那樣,将該部分邏輯至于現态寄存器之後,那麼該組合邏輯的時間延遲會影響到後續電路的工作;反之,如果像Moore2型那樣,将該部分邏輯置于次态産生邏輯之後,那麼該組合邏輯的時間延遲會影響到狀态機自身的工作。是以,将Moore 1和Moore 2型狀态機的缺點最小化,優點最大化,便有了Moore3型狀态機,它的原理結構框圖如下:

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

現實中,狀态機的輸出往往不止一個,通過上圖可以看出,Moore3型狀态機就是将那些适合使用組合邏輯的輸出采用Moore1型的方式來處理,而将那些适合使用寄存器的輸出采用Moore2型的方式來處理,是以Moore3型狀态機也叫混合型Moore狀态機。

那到底什麼樣的輸出适合采用組合的形式,而什麼樣的輸出适合采用寄存的形式呢?如果後續子產品為電平敏感的,那麼自然應該選擇寄存形式的輸出,不過FPGA中一般應該為全同步邏輯設計,是以絕大多數情況下,狀态機的前級輸入、後級輸出及其本身是工作在一個時鐘域内的,此時,假設由現态,輸入産生次态的組合邏輯時間延遲為T1,有狀态産生輸出的組合邏輯的時間延遲為T2,而後續使用該輸出的電路中,又會在輸出信号到達下一個寄存器前引入時間延遲最大為T3的組合邏輯。

那麼根據短闆效應,如果T1 + T2 <= T2 + T3,則該輸出采用Moore2型的寄存方式處理可能提升整個系統的性能;反之,該輸出采用Moore1型的組合方式處理可以提升整個系統的性能。

當然了,上述方法僅僅是從理論上去了解如何進行輸出形式選擇,其實并不可能嚴格地參考使用,因為布局布線的不同對T1、T2和T3的取值影響很大,是以實際中都是憑經驗或者大概估計一下各個組合邏輯的複雜度和級聯情況,然後大概估算後作出選擇,而更多的時候,是需要根據後續時序分析報告中的結果,來對狀态機的輸出形式進行調整。

繼續閱讀