回覆列表
  • 1 # 使用者3819794640311

    四段式狀態機 在數位電路中,狀態機是一個非常重要的組成部分,對於系統的高速、可靠、穩定具有決定性的作用。其實,計數器本質上也可以認為是一個狀態機,區別在於它是用數字來區分不同的狀態。那麼這兩者在使用上有什麼區別呢? 如果是順序處理或簡單流程控制,如0-1-2-3-0這樣的步驟,用計數器實現是最方便的。但是在複雜的流程控制場合,跳轉順序為亂序,如0-1-5-2-4的步驟,用狀態機來設計就比較合理。下面我們依據明德揚至簡設計法規範規程體系,進行狀態機設計。 首先我們先看規範要求。 一、 使用四段式狀態機結構。 二、 第一段寫法不變。 三、 第二段狀態轉移條件用訊號名來表示。 四、 用assign形式將狀態轉移條件寫成XX2XX-start形式。 五、 狀態轉移條件,用assign產生變化條件時,必須加上當前狀態。 六、 狀態不變,使用state-n=state-c。 接下來對於規範中“四段式狀態機”的概念進行解釋。 目前狀態機的結構有一段式、二段式、三段式。三段式狀態機具備諸多優點,總體上來講遠遠強於一段式、二段式結構。四段式狀態機是明德揚在三段式狀態機的基礎上,最佳化發展而來的,一種全新的狀態機結構。 該結構不是指四個always程式碼,而是四段程式碼。如果沒有輸出訊號,就只有三段程式碼(兩個always);如果有多個輸出訊號,就會有多個always。由此可以看出,四段式狀態機是以邏輯關係產生的四個階段,而不是機械僵化、固定不變的四個段落。 這四段分別是:1.同步時序的always模組,格式化描述次態遷移到現態暫存器。2.組合邏輯的always模組,描述狀態轉移條件判斷。3.用assign定義轉移條件。4.設計輸出訊號。我們可以簡單的理解為現態、次態、轉移、輸出。 規範中相關條例的原理,在本節中暫不介紹,詳情請見第四章第2節《狀態機模板》。這裡我們先繼續介紹四段式狀態機的設計規程——狀態機八步法。 1. 明確功能 2. 輸出分析 3. 狀態合併 4. 狀態轉移 5. 轉移條件 6. 完整性檢查 7. 狀態機程式碼 8. 功能程式碼 下面我們來看一個四段式狀態機用八步法實現專案功能的程式碼。 功能要求:書57—58頁。 程式碼:書63—67頁。 最後,總結一下這種規範規程設計狀態機的諸多優點: 1. 四段式狀態機的總體思路,是逐個思考、有序進行的方式; 2. 狀態劃分摒棄了越細越好的錯誤思路,而是從輸出訊號需求出發,直接簡潔客觀; 3. 完整性檢查確定了所有訊號都設計出來,沒有遺漏,大大減少模擬除錯工作量; 4. 命名的規範性,如state-c現態、state-n次態等等,保證了所有狀態轉移編寫統一,減少編寫錯誤; 5. 轉移條件的規範性,如always裡面的轉移條件全部用訊號名來表示,這樣寫always時只需要考慮跳轉方向和命名,程式碼非常整潔; 6. 準確定義節約系統資源。如狀態不跳轉時,全部寫成state-n=state-c的規定,避免了寫成state-n=state-n的組合邏輯形式,生成我們不希望的鎖存器; 7. 現態、次態、轉移、輸出都是獨立的,利於閱讀、維護、升級; 8. 能夠消除組合邏輯輸出的毛刺隱患,同時能做到同步暫存器輸出。 總體上來說,這種方法結構清晰、程式碼簡潔、出錯率低、通用性強、便於移植。將狀態機設計的思路、過程、結果實現了至簡化。不僅如此,對於學習者來說,極易學會和上手。 在前面的內容中我們講了計數器和狀態機的規範規程,實際上從架構體系來說,明德揚設計體系根據模組實現功能的不同,將其分為計數器、狀態機、FIFO三種架構。幾乎所有模組都可以應用這三種架構來實現。 本章均以明德揚規範規程體系為例,目的是說明設計規範化的重要意義和實用價值。接下來要講的是設計中常見的時序約束和定位問題,敬請關注。

  • 中秋節和大豐收的關聯?
  • 沒有種植過食用菌類,如何區別出香菇、冬菇和花菇,它們一樣嗎?