eg: typedef enum {INIT, DECODE, IDLE} fsmstate_e; fsmstate_e pstate, nstate; //声明自定义类型变量。 1. 2. 如果不指定枚举值,默认从0开始,每次递增1。如上述例子,INIT代表0,DECODE代表1,IDLE代表2。 使用do...while循环来遍历所有的值。 2. 枚举类型的转换 枚举类型
SystemVerilog还为Verilog加入了几个新的数据类型,以便能够在更抽象的层次上建模硬件。 l char:一个两态的有符号变量,它与C语言中的char数据类型相同,可以是一个8位整数(ASCII)或short int(Unicode); l int:一个两态的有符号变量,它与C语言中的int数据类型相似,但被精确地定义成32位; l shortint:一个两态...
将一个与枚举类型声明的基类宽度不同的值赋给一个枚举标签是错误的,下面的例子就是错误的,enum变量默认为int基类,给标签赋给一个3位值就会发生错误。 enum {WAIT =3'b001, LOAD = 3'b010, READY =3'b100} state; 1. 2. 3. 这是错误的,因为int类型是32位,但是其中的枚举元素的变量宽度是3位...
function enum first ():返回枚举类型中第一个成员的值。 Function enum last ():返回枚举类型中最后一个成员的值。 Function enum next ( int unsigned N=1): 以当前成员为起点,返回后续第N个成员的值,默认是下一个成员的值;若起点为最后一个成员,则默认返回第一个成员的值。 Function enum prev ( int ...
$typename(bit_data),$typename(int_data),$typename(class_data),$typename(class_data.c_A_var)); end endprogram 输出: (2)$bits():返回某个变量占用的bit数,即:int、enum、结构体等类型的变量转成bit流时,所占用的bit个数。$bits不可以接收动态类型,如class。 示例: `timescale 1ns/1ps typedef...
enum{RED, YELLOW, GREEN} light_1;// int type : RED = 0; YELLOW = 1; GREEN = 2enumbit[1:0] {RED, YELLOW, GREEN} light_2;// bit type : RED = 0; YELLOW = 1; GREEN = 2 用户可以为任何枚举名称分配任何整数值。如果任何名称没有赋值,则它会自动采用先前名称的递增值。
enum{标签名1,标签名2,...}变量名; 枚举可以理解为给标签名赋值,或给这个给数值一个标签 如果没有明确给定数据类型,枚举中的数值是int类型,且数值依次是0, 1, 2... 这个情况是不是很像有限状态机对状态的定义,就像这样: //状态定义parameter S0=3'd0;parameter S1=3'd1;parameter S2=3'd2;parameter...
enum 可以自己定义枚举值,如果枚举值缺省,则为从 0 开始递增的整数(默认为 int 类型),例如下面的代码中使用 INIT 代表缺省值 0,DECODE 代表定义值 2,IDLE 代表缺省值 1。 typedefnum(INIT, DECODE=2, IDLE) state_name; 下面举了几个例子,说明 enum 枚举类型的使用: ...
enum{WAITE,LOAD,READY}states_e; states_e是int数据类型的变量,是32位有符号数据类型。这意味着枚举列表最多可以有2147483648(2^(32-1))个标签。 列表中的第一个标签WAITE的值为0,LOAD为l,READY为2。(标签WAITE故意在末尾拼写为“E”,以避免与SystemVerilog中保留的关键字wait产生混淆或冲突。) ...