繁体   English   中英

SystemVerilog-有了枚举,您可以拥有一个范围吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM