對于前端工程師而言,設(shè)計(jì)狀態(tài)機(jī)是最基本的技能,狀態(tài)機(jī)就像電路的指揮中心,控制著電路的各種數(shù)據(jù)路徑,所以是至關(guān)重要的。下面就來簡單回顧一下狀態(tài)機(jī)的一些基本概念。
何時(shí)使用狀態(tài)機(jī):
狀態(tài)機(jī)是用于描述有邏輯順序的電路。即在拿到一個(gè)模塊的功能描述后,有類似“先....然后...再”或者“如果....如果...."這類描述的時(shí)候,可以考慮使用狀態(tài)機(jī)。
關(guān)于何時(shí)使用狀態(tài)機(jī),這里介紹兩種常見的情況:
- 第一種思路,從狀態(tài)入手,如果一個(gè)模塊有比較明顯的時(shí)序順序或者邏輯順序,可以將其劃分成不同的狀態(tài),然后考慮什么時(shí)候進(jìn)行狀態(tài)跳轉(zhuǎn)。
- 第二種思路是從輸出入手,一個(gè)模塊要輸出數(shù)據(jù),什么時(shí)候(狀態(tài))輸出什么樣的數(shù)據(jù),什么時(shí)候改變輸出的數(shù)據(jù)(狀態(tài)的跳轉(zhuǎn)和輸入),通過這樣的形式來進(jìn)行回溯。
無論哪種思路,使用狀態(tài)機(jī)的目的都是要控制某部分電路,完成某種具有邏輯順序或時(shí)序規(guī)律的電路設(shè)計(jì)。 其實(shí)對于邏輯電路而言,小到一個(gè)簡單的時(shí)序邏輯,大到復(fù)雜的微處理器,都適合用狀態(tài)機(jī)方法進(jìn)行描述。
狀態(tài)機(jī)基本要素與分類:
狀態(tài)機(jī)的基本要素有 3 個(gè),它們是:狀態(tài)、輸出和輸入。
- 狀態(tài):也叫狀態(tài)變量。在邏輯設(shè)計(jì)中,使用狀態(tài)劃分邏輯順序和時(shí)序規(guī)律。可以使用one-hot或者二進(jìn)制編碼來作為狀態(tài)變量,更好的辦法是使用電路中已有的信號(hào)的不同值來作為狀態(tài)變量,這樣可以大大節(jié)省電路資源,不必要?jiǎng)?chuàng)建新的信號(hào)。比如一些協(xié)議轉(zhuǎn)換時(shí)候輸入編碼的某幾位功能位。
- 輸出:輸出指在某一個(gè)狀態(tài)時(shí)向外界輸出的信號(hào),常常是控制信號(hào),比如讀寫信號(hào),使能信號(hào)。
- 輸入:指狀態(tài)機(jī)中進(jìn)入每個(gè)狀態(tài)的條件,有的狀態(tài)機(jī)沒有輸入條件,其中的狀態(tài)轉(zhuǎn)移較為簡單,有的狀態(tài)機(jī)有輸入條件,當(dāng)某個(gè)輸入條件存在時(shí)才能轉(zhuǎn)移到相應(yīng)的狀態(tài)。
根據(jù)狀態(tài)機(jī)的輸出是否與輸入條件相關(guān),可將狀態(tài)機(jī)分為兩大類:摩爾(Moore)型狀 態(tài)機(jī)和米勒(Mealy)型狀態(tài)機(jī)。
摩爾狀態(tài)機(jī):摩爾狀態(tài)機(jī)的輸出僅僅依賴于當(dāng)前狀態(tài),而與輸入條件無關(guān)。
- 米勒型狀態(tài)機(jī):米勒型狀態(tài)機(jī)的輸出不僅依賴于當(dāng)前狀態(tài),而且取決于該狀 態(tài)的輸入條件。
狀態(tài)機(jī)的基本描述方式:
一般用于狀態(tài)機(jī)狀態(tài)描述的方法有2種,分別是:狀態(tài)轉(zhuǎn)移圖,和 HDL 語言描述。
- 狀態(tài)轉(zhuǎn)移圖:狀態(tài)轉(zhuǎn)移圖是狀態(tài)機(jī)描述的最自然的方式。經(jīng)常在設(shè)計(jì)規(guī)劃階段定義邏輯功能時(shí)使用,也可以在分析代碼中狀態(tài)機(jī)時(shí)使用,通過圖形化的方式非常有助于理 解設(shè)計(jì)意圖。使用一些EDA工具也可以生成狀態(tài)轉(zhuǎn)移圖便于進(jìn)行分析,當(dāng)然前提是HDL代碼的書寫要規(guī)范。
- HDL 語言描述狀態(tài)機(jī),目前對于狀態(tài)機(jī)有一些固定規(guī)范的描述方法,可以使 HDL 語言描述的狀態(tài)機(jī)更安全、穩(wěn)定、高效、易于維護(hù)。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.