2.1.4 字符串 string
大小可变,动态分配的字节数组。
语法:string variable_name [=initial_value];
注意字符串的操作符和内置方法的使用。
2.1.5 结构体和联合体
结构体:struct 联合体:union
struct {
reg [15:0] opcode;
reg [23:0] addr;
} IR;
union {
int I;
shortreal f;
} N;
结构体或联合体中的域可以通过在变量名和域名字之间插入句点(.)来引用:
IR.opcode = 1; // 设置IR变量中的opcode域
N.f = 0.0; // 将N设置成浮点数的值
typedef struct {
reg [7:0] opcode;
reg [23:0] addr;
} instruction; // 命名的结构体
instruction IR; // 结构体实例
IR.opcode = 1; // 设置IR变量中的opcode域
instruction = {5, 200}; //IR = {5,200}???jyz
结构体可以作为一个整体传递到函数或任务,也可以从函数或任务传递过来,也可以作为模块端口进行传递。
通过packed关键字,可以将结构体和联合体定义为压缩结构体和压缩联合体。
LED_Struct的第[0]位是L0,第[1]位是L1:
tepedef struct packed{bit L3,L2,L1,L0;} LED_Struct;//packed以后的自定义结构
var LED_Struct rLED; //声明为暂存类型的自定义结构rLED
var bit [3:0] rLED; //等价关系
rLED <= 4'd0;
有packed的自定义结构声明暂存类型时,LED_Struct声明一个名为rLED的暂存类型,而该rLED与"var bit [3:0] rLED"声明方法有等价的关系,rLED可以直接为所有成员赋值。
2.1.6 常量
parameter
localparam
specparam
const