SystemVerilog - 有了enum,你有一个范围吗?

时间:2017-07-20 19:30:05

标签: enums verilog system-verilog

使用typedef枚举可以获得未指定值的范围吗?例如:

typedef bit [3:0] enum {BLUE = 4'h0, RED = 4'h1, OTHERS = 4'h2 to 4'hF};

或类似的东西?如果用户选择了未分配的值,会发生什么?

2 个答案:

答案 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;

默认类型logicx,因此默认情况下,上面的变量state的值为3'bxxx。因此,通过使用四态基类型,我们可以建模未初始化状态,检查FSM是否已正确复位。

所以,你问“如果用户选择一个未分配的值,会发生什么?”变量将具有该值,并且在Serge的case示例中,将不等于任何已定义的枚举值。