我正在使用參數關鍵字來定義狀態,即RESET = 5'b00000。如果我想使用$ display打印狀態名稱而不是二進制表示,或者在我的模擬波形查看器中顯示狀態名稱,我該怎麼做?它不工作,試圖打印出一個字符串(如你所期望的),所以我想知道這是否可以完成。使用Verilog參數關鍵字
2
A
回答
3
我不知道一種方法來自動$display
一個parameter
的名稱。但是,如果你不介意重複你的代碼,你可以創建一個task
(或function
)來實現自己的目標:
task show_name_state;
case (state)
5'b00000: $display("RESET");
5'b00001: $display("WAIT");
endcase
endtask
$display(state); show_name_state();
我知道至少有一個(昂貴的)的Verilog調試器,它具有識別能力參數並在其波形查看器中自動顯示其名稱:Verdi(以前稱爲Debussy)nWave工具可以執行此操作。
1
可以有多個參數具有相同的值,因此您通常無法從數值轉換爲具有該值的參數的名稱。參數類似於C #define
s;雖然可以使用它們來定義一組狀態,但變量和用於表示可能狀態的參數列表之間沒有正式關聯。因爲沒有更好的選擇,所以它通常以這種方式使用(錯誤)參數,但是SystemVerilog引入了一個enum
類型,它沒有參數方法的問題。您沒有提及您使用的是什麼工具,但假設您的工具支持SystemVerilog枚舉類型,那麼這對於狀態值來說是更好的選擇。
2
如果你的目標僅僅是顯示的狀態的模擬過程中的名字,我通常會做這樣的事情
`ifdef SIMULATION
reg [127:0] __state__;
case (state)
STATE_1 : __state__ = "STATE_1";
STATE_2 : __state__ = "STATE_2";
default : __state__ = "error";
endcase
`endif
如果狀態是有問題的參數狀態寄存器。
相關問題
- 1. SEO關鍵字參數使用
- 2. 使用ref關鍵字參數?
- 3. 語法錯誤:關鍵字參數後非關鍵字參數
- 4. 關鍵字參數/字典
- 5. Gvim摺疊系統verilog關鍵字對
- 6. 使用argparse參數作爲關鍵字參數
- 7. 的Javascript「參數」關鍵字
- 8. Python的關鍵字參數
- 9. 直通關鍵字參數
- 10. 使用函數作爲關鍵參數
- 11. 如何使用「使用」關鍵字的可變參數模板
- 12. 您可以將關鍵字參數擴展與常規關鍵字參數結合使用嗎?
- 13. 如何使用字符串作爲關鍵字參數?
- 14. 字典到關鍵字參數解包
- 15. 在函數參數中使用auto關鍵字是否正確?
- 16. 當使用這個關鍵字作爲函數參數
- 17. 使用帶有關鍵字參數的multiprocessing.Pool.map()函數?
- 18. 使用*&參數對函數進行Const關鍵字。
- 19. 使用關鍵字參數調用任務塊
- 20. 在C#中對通用參數使用「params」關鍵字
- 21. 如何從字符串參數中獲取關鍵字參數?
- 22. YARD關鍵字參數使用默認哈希
- 23. 使用ibm-cos-sdk時意外的關鍵字參數'ibm_api_key_id'?
- 24. 使用params關鍵字與動態類型參數
- 25. 如何使用IN sql關鍵字建立參數化查詢?
- 26. 使用LIKE關鍵字SQL中的參數
- 27. 'this'關鍵字:使用它作爲參數
- 28. 是否可以使用查詢參數填充IN關鍵字
- 29. 我應該使用什麼參數修改關鍵字?
- 30. Can Racket宏可以使用關鍵字參數嗎?
您當然可以用參數RESET替換case語句中的5'b00000。 – George 2010-10-29 13:21:43