SV——自定义类型
关键词:typedef 类似于c
所谓自定义就是用户用一个具有意义的词语去简单的描述一个很长,很难理解的量。并且这个新的词在SV语法里面是没有定义的。
【1】它经常和enum和struct一起使用
enum来创建枚举类型;
struct来创建结构体类型。
Verilog没有这样的语法,SV提供用户构造更高的抽象类型。
typedef int unsigned uint; 这就是uint对int unsigned的指代;
当再一次使用的时候,uint a,b; //定义的就是int unsigned类型。
“自定义名字_t” typedef不一定只是和enum或者struct进行指代,它可以和任意的类型进行指代。
枚举类型
[enum]:描述一个抽象的变量(类似于状态机中的具有状态“idle,state,…”),合法的范围。
例题: enum {red, green,blue} RGB; //RGB的初始值是red。
Verilog没有所谓的枚举类型语法规则,因此Verilog中不得不采用parameter和
`define来定义各个合法的宏名称。(在状态机的时候)
枚举类型默认是int,既32位的二值逻辑数据类型。
enum logic[1:0] { waite, load, ready} state ;// 没有赋值的时候,将会是默认从0开始递增,既waite=0(00);load=1(01);ready=2(10).
也可以赋予初值
enum logic[2:0] { waite=3’b001, load=3’b010, ready=3’b100} state ;
枚举类型能赋值给整形,但是整形不可以赋值给枚举类型。
4. 枚举类型也可以声明为自定义类型,这就使得可以用同一个枚举类型来声明多个变量或者线网。
5. typedef enum{WAITE, LOAD, READY} states_t; //声明了一个类型 states_t
6. states_t state, next_state; //用这个类型又声明了两个变量
7. note: 如果没有 typedef 这个关键字限定的话, states_t 是一个变量。
8. 如果枚举类型没有伴随typedef,那么该枚举类型指的则是一个匿名枚举类型(anonymous enumerated type)