[英]SystemVerilog - With an enum can you have a range?
使用typedef枚举,可以为未分配的值提供范围吗? 例如:
typedef bit [3:0] enum {BLUE = 4'h0, RED = 4'h1, OTHERS = 4'h2 to 4'hF};
还是类似的东西? 如果用户选择一个未分配的值,将会发生什么?
枚举中不能包含范围。 但是其余的取决于您的使用方式。 例如,在case语句中:
case(sel)
BLUE: do-blue-function;
RED: do-red-function;
default: do-other-function;
endcase
System-Verilog中的枚举值可能超出范围。 如果您选择四态类型作为基本类型 ,这在使用枚举描述FSM时特别有用,例如:
// a four-state base type (with default value 3'bxxx)
// |
// | the base value of IDLE will be 3'b000
// | |
// V V
typedef enum logic[2:0] {IDLE, GO1, GO2} state_type;
state_type state;
logic
的默认类型是x
,因此默认情况下,上面的变量state
的值为3'bxxx
。 因此,通过使用四态基本类型,我们可以对未初始化状态建模,以检查FSM是否已正确重置。
因此,您问“如果用户选择一个也未分配的值会发生什么?” 变量将具有价值,并如塞尔的case
例如,在将不等于任何所定义的枚举值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.