枚举类型enum

您所在的位置:网站首页 sv枚举类型 枚举类型enum

枚举类型enum

#枚举类型enum| 来源: 网络整理| 查看: 265

enum的基础语法

enum提供方法来描述抽象变量的合法值范围,其每个值都需要提供一个用户自定义的名字

enum{red,green.blue} RGB; // RGB是一个枚举类型变量 // red,green.blue是枚举常量

枚举数据默认(缺省类型)的存储类型为int型(32位有符号二值逻辑),且数值从0开始递增 。

枚举类型也可以直接赋初值

enum logic [2:0] {WAITE = 3'b001,LOAD = 3'b010,READY = 3'b100} state_t;

枚举类型是四值逻辑,直接对枚举值赋值X 、Z也是合法的

​ 如:enum logic {ON = 1’b1,OFF = 1’bz } out;

enum和typedef搭配使用

便于用户自定义枚举类型的共享使用,可以用同一个枚举类型来声明多个变量或线网

typedef enum {INIT,DECODE,IDLE} fsmstatae_e; //fsmstatae_e 表示是 enum {INIT,DECODE,IDLE} 这个**类型** //INIT,DECODE,IDLE的整型分别是 0,1,2 fsmstatae_e pstate, nstate; //声明2个变量 case (pstate) IDLE: nstate = INIT; INIT:nstate = DECODE; default:nstate = IDLE; endcase $display ("Next state is %s", nstate.name()); //显示状态名 ;%s是以字符串形式

【注意】:

如果给nstate直接用整数赋值,那么这种赋值方法不合法如果右侧是枚举类型,可以直接赋值给整型,即int = enum 型式成立如果右侧是整型,不可以直接赋值给枚举 ,即enum = int 不成立;必须要做类型转换 enum = T’(int);如果枚举类型没有伴随typedef,那么该枚举类型是一个匿名枚举类型 //例子1: typedef enum {WAITE,LOAD ,READY } state_t; state_t state ,next_state; int foo; state = next_state; //合法 foo = state + 1; // 合法 ,枚举类型可以转化成整型 state = foo + 1 ; //不合法 ,整型不能隐式的转化成枚举类型 state = state +1; //不合法 state++; // 不合法,内部包含一个state= state +1 //例子2: typedef enum {WAITE,LOAD ,READY } state_t; int sum = WAITE + LOAD + READY; // sum的结果为 3


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3