我正在使用参数关键字来定义状态,即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