c++教程 如何自動生成verilog狀態(tài)機?
如何自動生成verilog狀態(tài)機?狀態(tài)機的描述主要包括以下幾個方面:如何進行狀態(tài)轉(zhuǎn)換,狀態(tài)轉(zhuǎn)換的條件,每個狀態(tài)的輸出是什么;最好的狀態(tài)機是將三者分開,這三者由組合邏輯和非組合邏輯組成,使程序易于閱讀,
如何自動生成verilog狀態(tài)機?
狀態(tài)機的描述主要包括以下幾個方面:如何進行狀態(tài)轉(zhuǎn)換,狀態(tài)轉(zhuǎn)換的條件,每個狀態(tài)的輸出是什么;最好的狀態(tài)機是將三者分開,這三者由組合邏輯和非組合邏輯組成,使程序易于閱讀,易于維護,方便添加約束。狀態(tài)的第一部分,總是時序電路的模塊,用同步電路來描述狀態(tài)跳變的過程,從而通過觸發(fā)消除不穩(wěn)定狀態(tài)。狀態(tài)的第二部分,組合邏輯always模塊,用來描述狀態(tài)轉(zhuǎn)移的判斷條件。通過組合邏輯實現(xiàn),達到即時判斷的效果。狀態(tài)的第三部分在下一個時鐘的邊緣同步改變。時序電路模塊用來描述每一段狀態(tài)的結(jié)果輸出。結(jié)果表明,三級狀態(tài)機實現(xiàn)了寄存器同步輸出,消除了組合邏輯輸出的不穩(wěn)定性和毛刺,更有利于時序路徑的分組。FPGA的綜合布線效果較好,提高了電路的工作時鐘,提高了布線的成功率。
狀態(tài)機和流程引擎的區(qū)別?
事件流由流程引擎執(zhí)行并由狀態(tài)機監(jiān)控,因此狀態(tài)機針對的是狀態(tài),而流程引擎針對的是執(zhí)行。兩者有明顯的區(qū)別
我更喜歡使用狀態(tài)機。狀態(tài)機的描述方法更接近上層,類似于軟件,更接近人們的思維方式。代碼寫起來也很酷。在文檔中繪制狀態(tài)轉(zhuǎn)換,并寫出當前狀態(tài)和次狀態(tài)的所有跳轉(zhuǎn)條件。下面的事情基本上是體力勞動。代碼一般是一個狀態(tài)機(FSM)的當前狀態(tài)(FSM)加上一個計數(shù)器(FSM)再加上各種輸入,兩級三級寫入即可。狀態(tài)機的缺點是性能低下。一般來說,一個州做一件事,但表現(xiàn)很差。在追求高性能的場景中,通常不使用它。在高性能場景中,通常使用管道設(shè)計。我覺得狀態(tài)機能寫的電路都是簡單的電路。真正的困難是管道。右