SystemVerilog学习笔记(6) ------ 结构体(1)

        SystemVerilog的结构体声名和C中的声名类似, 有匿名结构体和自定义结构体. 和C不同的是, SystemVerilog在声名结构体时, 大括号左边不能像C可以有个标识符.

SystemVerilog代码
  1. struct [packed[signing]]{          // 匿名结构体
  2.     struct_members
  3. }struct_variable_name;
  4.  
  5. typedef struct [packed[signing]]{  // 自定义类型结构体
  6.     struct_members
  7. }struct_type;
  8. struct_type struct_variable_name;  // 声名结构体变量

         结构体中的成员变量在定义结构体时就可以一并赋上初值, 也可以在声名变量时赋初值.

SystemVerilog代码
  1. typedef struct{  
  2.     int  i_a = 0;          // 定义结构体时赋初值  
  3.     int  i_b = 1;  
  4.     real r_c;  
  5. }data_t;  
  6.   
  7. data_t data1 = '{2, 3, 4}; /* 定义变量时赋初值, 值的顺序要得结构体中 
  8.                             * 定义的顺序一致 */  
  9. data_t data2 = '{i_b:5, i_a:6, r_c:7.0};  
  10.                            /* 按成员名称来赋值, 用这种方式赋值时,  
  11.                             * 所有的量都要用成员名来赋值. */  
  12. data_t data3 = '{default:0};       // 所在成员设置成0.  
  13. data_t data4 = '{int:8, real:9.0}; // 按成员类型赋值.  
  14. data_t data5 = '{int:10, default:0, i_b:11};  
  15.                            /* 混合赋值时, 成员名优先级最高, 
  16.                             * 数据类型其次, default最低. */  


文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: SystemVerilog Verilog FPGA
相关日志:
评论: 0 | 引用: 0 | 查看次数: 1328
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 200 字 | UBB代码 开启 | [img]标签 关闭