FPGA中狀態機實現需要注意的地方

2021-08-03 04:18:23 字數 781 閱讀 8058

寫狀態機時需要注意的地方:

1、狀態機的狀態編碼大概有三種:二進位制編碼,格雷碼,獨熱碼。

其中二進位制編碼就是000、001、010、011、100這類的逐漸加一

格雷碼就是相鄰兩個狀態只有一位數不一樣,000、001、011、010之類的

獨熱碼的意思是有多少個狀態那麼狀態碼就有多少位,比如說狀態機有六個狀態,那麼狀態向量就有6位,其狀態分別為000001、000010、000100、001000、010000、100000,這六種狀態,也就是說只有一位為1。

2、二進位制編碼使用較少的觸發器,消耗較多的邏輯資源,而獨熱碼相反。獨熱碼最大的優勢在於狀態比較時僅僅需要比較乙個位,一定程度上化簡了解碼邏輯,減少了毛刺產生的概率。在需要表示相同的狀態數時,獨熱碼所佔的位寬較大,也就是消耗較多的觸發器,但是這些額外的觸發器所占用的面積可與解碼電路省下來的面積相抵消。

3、cpld中有較多的邏輯資源,而觸發器資源較少;fpga中提供的觸發器資源較多,所以在以後寫狀態機的時候要注意這一點。大型狀態機使用one-hot更高效

4、寫狀態機時最好使用三段式的狀態機,第乙個狀態機只寫當前狀態以及下乙個狀態;第二個狀態機寫下乙個狀態的跳轉條件以及跳轉狀態;第三個狀態機寫輸出。一般來說,狀態轉移部分(第乙個狀態機)是同步時序電路而狀態的轉移條件的判斷(第二個狀態機)是組合邏輯。

5、三段式描述方法與兩段式描述相比,雖然**結構複雜了一些,但是換來的優勢是使fsm 做到了同步暫存器輸出,消除了組合邏輯輸出的不穩定與毛刺的隱患,而且更利於時序路徑分組,一般來說在fpga/cpld 等可程式設計邏輯器件上的綜合與布局佈線效果更佳。

FPGA 狀態機,FPGA的靈魂

有關狀態機的文章,事實上已經寫過很多了,可是即使如此,真的懂了嗎?真的能熟練應用嗎?未必吧。這篇博文 是 fpga之道 認真下看去收貨頗豐!借這個主題來梳理下狀態機 狀態機是fpga設計中一種非常重要 非常根基的設計思想,堪稱fpga的靈魂,貫穿fpga設計的始終。簡單地說,狀態機就是一副描繪著狀態...

FPGA學習筆記 狀態機的實現

一 原理介紹 狀態機 乙個狀態機對應多種狀態,每個狀態由乙個觸發條件改變 專案例子介紹 當檢測到測試資料中 fpga 四個字母連續出現,led狀態改變 二 實驗 專案檔案 module finitestatemachine clk,rst n,data,led 檢測fpga input clk in...

FPGA 狀態機的模型之Moore型狀態機

上篇博文 狀態機,fpga的靈魂,說到了狀態機的基礎知識,講到了狀態機的組成六要素,工作四要素。這篇博文來講狀態機的模型之moore狀態機,從標題也能看出,狀態機的知識並沒有結束,後面還會提到mealy型狀態機。根據狀態機的輸出與其現態 輸入之間的關係,可將fpga中的狀態機抽象為三種基本模型 mo...