我想知道是否有人可以告诉我在Verilog中给不同州的名字的最佳方式是什么?例如,而不是以下情况
case (a)
1'b0 : statement1;
1'b1 : statement2;
1'bx : statement3;
1'bz : statement4;
endcase
使用这种格式的代码
要好得多case (a)
Load : statement1;
Store : statement2;
Check : statement3;
Reset : statement4;
endcase
答案 0 :(得分:2)
如果不想使用枚举,那么localparams也是一种在你的州使用助记符的好方法。
$from = 'System@dmworld24.com';
大多数语言使用大写字母来表示常量,在Verilog中使用localparams和参数执行此操作也是一种好习惯。
答案 1 :(得分:1)
enum
logic
类型可以帮助您。例如,状态机的IDLE,BUSY等状态变量只能定义所有状态,并且可以使用状态名称显示,即enum
s。
枚举可以定义如下:
enum logic {Load,Store,Check,Reset} a;
您可以明确将值分配给枚举,如下所示:
enum logic {Load='0,Store='1,Check='x,Reset='z} a;
此外,您还有内置方法,例如first
,last
,name
等,以便对enum
执行操作。< / p>
以下是我要解释的确切代码:
module top();
enum logic {Load='0,Store='1,Check='x,Reset='z} a;
initial
begin
case (a)
Load : $display("1");
Store : $display("2");
Check : $display("3");
Reset : $display("4");
endcase
end
endmodule
有关详细信息,请参阅Enumerations链接。