在Verilog中为不同案例命名的最佳方法是什么?

时间:2015-12-11 11:16:06

标签: verilog

我想知道是否有人可以告诉我在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

2 个答案:

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

此外,您还有内置方法,例如firstlastname等,以便对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链接。