使用typedef枚举可以获得未指定值的范围吗?例如:
typedef bit [3:0] enum {BLUE = 4'h0, RED = 4'h1, OTHERS = 4'h2 to 4'hF};
或类似的东西?如果用户选择了未分配的值,会发生什么?
答案 0 :(得分:1)
枚举中不能包含范围。但其余的取决于你将如何使用它。例如,在case语句中:
case(sel)
BLUE: do-blue-function;
RED: do-red-function;
default: do-other-function;
endcase
答案 1 :(得分:0)
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是否已正确复位。
所以,你问“如果用户选择一个未分配的值,会发生什么?”变量将具有该值,并且在Serge的case
示例中,将不等于任何已定义的枚举值。