1 / 46
文档名称:

SystemVerilog硬件设计及建模—第11章.ppt

格式:ppt   页数:46
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

SystemVerilog硬件设计及建模—第11章.ppt

上传人:所以所以 2012/2/25 文件大小:0 KB

下载得到文件列表

SystemVerilog硬件设计及建模—第11章.ppt

文档介绍

文档介绍:第5章数组、结构体和联合体
结构体
联合体
结构体和联合的操作
非压缩数组
压缩数组
数组操作
数组foreach循环
用于数组的特殊系统函数
结构体
结构体提供了对相关信息进行分组的方法,结构体使用关键字struct声明,结构体内的成员可以是任何数据类型,包括用户自定义类型和其它的结构体类型;结构体是变量和常量的集合,整个集合可以用结构体名进行引用,也可以用结构体成员名来引用该成员。
struct {
int a, b;
opcode_t opcode;
logic [31 : 0] address;
bit error;
} instruction_word;
结构体内的成员引用:
= 32’hf000001e;
结构体与数组有什么不同?
结构体声明
变量或线网都可以定义为结构体,当结构体定义为线网时,结构体中所有成员必须都是四态类型的。
var struct {
logic [31 : 0] a, b;
logic [7 : 0] opcode;
logic [23 : 0] address;
} instruction_word_var;
wire struct {
logic [31 : 0] a, b;
logic [7 : 0] opcode;
logic [23 : 0] address;
} ;
struct {
logic [31 : 0] a, b;
logic [7 : 0] opcode;
logic [23 : 0] address;
} instruction_word_var;
Instruction_word_var是变量or线网类型?
虽然结构体可以声明为线网类型,但结构体内成员不能使用线网类型!!
结构体声明
自定义和匿名结构体:
typedef struct {
logic [31 : 0] a, b;
logic [7 : 0] opcode;
logic [23 : 0] address;
} instruction_word_t;
instruction_word_t IW;
struct {
logic [31 : 0] a, b;
logic [7 : 0] opcode;
logic [23 : 0] address;
} instruction;
自定义结构体可以在模块或接口内定义,在整个模块或接口中都可以使用,如果一个自定义结构体需要在多个模块中使用,或者是作为模块或接口的端口使用,那么结构体定义应放在package中!
结构体赋值
结构体初始化:用值列表方式初始化,值列表是使用’{}中的一组数值,大括号中的数值个数必须与成员个数一致。
typedef struct {
logic [31 : 0] a, b;
logic [7 : 0] opcode;
logic [23 : 0] address;
} instruction_word_t;
instruction_word_t IW = ‘{100, 3, 8’hff, 0};
//大括号间的数值必须与成员个数一致
结构体赋值
结构体成员赋值:
typedef struct {
logic [31 : 0] a, b;
logic [7 : 0] opcode;
logic [23 : 0] address;
} instr_t;
inst_t IW;
always @(posedge clk, negedge resetN)
if (!resetN) begin
= 100;
= 100;
= 8’hff; //成员引用
= 0;
end
else begin …
end
结构体赋值
结构体成员赋值:
always @(posedge clk, negedge resetN)
if (!resetN)
IW = ‘{100, 3, 8’hff, 0}; //结构体表达式赋值
else begin …
end
// IW = ‘{address : 0, opcode : 8’hff, a : 100, b : 5};
// IW = ‘{address : 0, opcode : 8’hff, 100, 5}; //错误,混用成员名称
//和成员顺序
IW = ‘{real : , default : 0};
IW = ‘{real : , default :