如何寫好狀態機
節選自《Verilog設計與驗證》 作者:吳繼華、王誠
狀態機是邏輯設計的重要內容,狀態機的設計水平直接反應工程師的邏輯功底,所以許多公司的硬件和邏輯工程師面試中,狀態機設計幾乎是必選題目。本章在引入狀態機設計思想的基礎上,重點討論如何寫好狀態機。
本章主要內容如下:
· 狀態機的基本概念;
· 如何寫好狀態機;
· 使用 Synplify Pro 分析 FSM。
6.1 狀態機的基本概念
本節的重點在于幫助讀者理解狀態機的基本概念和應用場合。
6.1.1 狀態機是一種思想方法
相信大多數工科學生在學習數字電路時都學習過狀態機的基本概念,了解一些使用狀態機描述時序電路的基本方法。但是,筆者希望大家能擴展思維,認識到狀態機不僅僅是一種時序電路設計工具,它更是一種思想方法。 我們先看下面一個簡單的例子。在大學生活中,某學生的在校的學習生活可以簡單地概括為宿舍、教室、食堂之間的周而復始,用圖 6-1 就可以形象地表現出來。這里畫這張圖,并不是要討論這個學生是否是一個“乖乖”類型學生,請大家注意,如果將圖中的“地點”認為是“狀態” ,將“功能”認為是狀態的“輸出” ,這張圖就是一張標準的狀態轉移圖,也就是說,我們用狀態機的方式清晰地描述了這個學生的在校生活方式。
0.png (18.13 KB, 下載次數: 60)
下載附件
2018-3-15 16:47 上傳
0.png (57.24 KB, 下載次數: 58)
下載附件
2018-3-15 16:48 上傳
同樣如果將圖中的“地點”認為是“狀態” ,將“功能”認為是狀態的“輸出” ,將“條件”認為是狀態轉移的“輸入條件” ,圖 6-2 也是一張標準的狀態轉移圖,通過狀態機的方式我們再次清晰地描述另一個學生的在校生活方式。 事實上使用狀態機方式,我們可以細致入微地描述任何一個學生的在校生活方式。大家通過前面兩個簡單舉例已經發現狀態機特別適合描述那些有發生有先后順序,或者有邏輯規律的事情——其實這就是狀態機的本質。狀態機的本質就是對具有邏輯順序或時序規律事件的一種描述方法。這個論斷的最重要的兩個詞就是“邏輯順序”和“時序規律” ,這兩點就是狀態機所要描述的核心和強項,換言之,所有具有邏輯順和時序規律的事情都適合用
狀態機描述。
很多初學者不知道何時應用狀態機。這里介紹兩種應用思路:第一種思路,從狀態變量入手。如果一個電路具有時序規律或者邏輯順序,我們就可以自然而然地規劃出狀態,從這些狀態入手,分析每個狀態的輸入,狀態轉移和輸出,從而完成電路功能;第二種思路是首先明確電路的輸出的關系,這些輸出相當于狀態的輸出,回溯規劃每個狀態,和狀態轉移條件與狀態輸入。無論那種思路,使用狀態機的目的都是要控制某部分電路,完成某種具有邏輯順序或時序規律的電路設計。
其實對于邏輯電路而言,小到一個簡單的時序邏輯,大到復雜的微處理器,都適合用狀
態機方法進行描述。請讀者打開思路,不要僅僅局限于時序邏輯,發現電路的內在規律,認電路的“狀態變量” ,大膽使用狀態機描述電路模型。由于狀態機不僅僅是一種電路描述工具,它更是一種思想方法,而且狀態機的 HDL 語言表達方式比較規范,有章可循,所以很多有經驗的設計者習慣用狀態機思想進行邏輯設計,對各種復雜設計都套用狀態機的設計理念,從而提高設計的效率和穩定性。
0.png (214.49 KB, 下載次數: 61)
下載附件
2018-3-15 16:48 上傳
完整的pdf格式文檔51黑下載地址(共29頁):
怎樣寫好三段式狀態機.pdf
(332.6 KB, 下載次數: 54)
2018-3-15 16:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|