struct和array的区别是,array里的数据类型都是一样的,struct可以用不一样的类型。

下面是array和struct区别的例子。

// Normal arrays -> a collection of variables of same data type

int array [10];                           // all elements are of type ‘int’

bit [7:0] mem [256];                 // all elements are of type ‘bit’

// Structures -> a collection of variables of same or different data types

struct

{ byte val1;

int val2;

string val3; } DataValue;

4.1 packed的struct

struct packed signed {

byte BE; //2-state

int addr; //2-state

int data; //2-state

} pStruct;         //signed, 2-state

由于所有变量都是2 state的,整个packed的struct也是2 state的。如果packet struct有一个4 state的的变量,整个struct也变成4 state。如果有一个2state的变量在4 state的struct里,当使用变量的时候还是2state的。

在内存中,第一个数据是存在最高位MSB,最后一个数据存在LSB

struct packed {

logic frame_;

logic [15:0] address;

logic [31:0] data;

} control;

module top;typedef enum{READ,WRITE} PCI_COMMAND;typedef enum{IRDY,TRDY} PCI_IO;typedef struct packed{PCI_COMMAND RW;PCI_IO IR;logic [15:0] addr;logic [15:0] data;} PCI_BUS;PCI_BUS pBUS;initial begin// Assign pBUS felds by namepBUS.RW = READ;pBUS.IR = IRDY;pBUS.addr = 16'ha0a0;pBUS.data = 16'hf0f0;$display("Fields by name :: pBUS = %p", pBUS);// Assign pBUS felds by bit positionpBUS[31:16] = 16'h1010;pBUS[15: 0] = 16'h2020;$display("Fields by bit position :: pBUS = %p", pBUS);// Assign all felds of pBUSpBUS = '{WRITE, TRDY, 16'h3030, 16'h4040};$display("All felds at once :: pBUS = %p", pBUS);endendmodule

Simulation log:

Fields by name :: pBUS = '{RW:READ, IR:IRDY, addr:'ha0a0, data:'hf0f0}

Fields by bit position :: pBUS = '{RW:READ, IR:IRDY, addr:'h1010, data:'h2020}

All felds at once :: pBUS = '{RW:WRITE, IR:TRDY, addr:'h3030, data:'h4040}

V C S S i m u l a t i o n R e p o r t

4.2 unpacked的struct

struct默认是unp的,举个例子

module SU;struct {bit   [7:0]  intr;         //unpacked structlogic [23:0] addr;} SURu;initial beginSURu.intr = 'hFF;              //assign to a single feld$display($stime,,, "SURu = %p", SURu);$display($stime,,, "SURu Intr = %h", SURu.intr);SURu = '{'h00,'hFF}; //assign to all felds$display($stime,,, "SURu = %p", SURu);//SURu = SURu + 'h12;// ERROR- Unpacked struct can't be used as a vectorendtypedef struct {int addr = 'hff;             //default initial valueint data;byte crc [4] = '{4{1}};      //default initial value} bus;bus b1;initial begin$display ("\n");$display($stime,,, "b1.addr=%h b1.data=%h b1.crc=%p", b1.addr,b1.data,b1.crc);b1 = '{'h 1010, 'h a0a0, '{1,2,3,4}}; //overrides defaults$display($stime,,, "b1.addr=%h b1.data=%h b1.crc=%p", b1.addr,b1.data,b1.crc);endendmodule

Simulation log:

0  SURu = '{intr:'hff, addr:'hxxxxxx} 0 SURu Intr = ff

0  SURu = '{intr:'h0, addr:'hff}

0  b1.addr=000000ff b1.data=00000000 b1.crc='{1, 1, 1, 1}

0  b1.addr=00001010 b1.data=0000a0a0 b1.crc='{1, 2, 3, 4}

V C S S i m u l a t i o n R e p o r t

5.3 作为参数传递

typedef struct {logic [31:0] addr;logic [63:0] data;logic [3:0] BEnable;} control;function Dbus (input control ct1);….endfunction

5.4 struct嵌套使用

typedef struct {bit [31:0] addr;bit [31:0] data; } Bus;Bus myBus;typedef struct {myBus x;myBus y; } multiBus;

4. struct 结构体相关推荐

  1. 1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组...

    一.程序 现实生活中,程序是指完成某些事务的一种既定方法和过程,可以把程序看成是一系列动作执行过程的描述. 在计算机世界,程序是指令,即为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集 ...

  2. c/c++教程 - 1.10 结构体 使用typedef定义struct结构体 结构体数组 结构体指针 结构体嵌套 结构体做函数参数 结构体const

    十二.结构体 (1)结构体定义和使用 基本概念:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型. 参考视频:https://www.bilibili.com/video/BV1et411b ...

  3. C/C++中struct结构体定义变量的3种方法及初始化

    本博客整理自http://blog.csdn.net/zunfo/article/details/51494631 1.struct结构体定义 1.1.先定义结构体,然后再定义结构体变量 struct ...

  4. Go语言核心之美 3.4-Struct结构体

    struct(结构体)也是一种聚合的数据类型,struct可以包含多个任意类型的值,这些值被称为struct的字段.用来演示struct的一个经典案例就是雇员信息,每条雇员信息包含:员工编号,姓名,住 ...

  5. Hive基础08、Hive引入Struct结构体

    Hive基础08.Hive引入Struct结构体 1.建表语句 创建一个温良贤淑女子的表 英文关键字解析: 1.CREATE TABLE 创建一个指定名字的表,如果库中已有相同名的表,则抛出异常: 用 ...

  6. struct结构体扩展-成员函数

    struct结构体扩展-成员函数 在C++中,允许在结构中定义函数,该函数被称为成员函数,描述形式如下: struct 结构名{数据成员成员函数 } 例题描述: 输入n个学生的信息,每个学生信息包括姓 ...

  7. (转载)虚幻引擎3--【UnrealScript教程】章节一:11.Struct结构体

    UnrealScript struct是把一组变量一起塞入到一个新类型称为struct的超级变量的一种方法.UnrealScript structs和C语言中的结构体很像,它可以包含变量.数组及其它的 ...

  8. 597-Golang的类型声明、struct结构体

    类型声明 type name 定义type (name 定义name2 定义2 ) 因为本质上是int,默认值是0 因为本质上就是int类型,shuzi和int没有区别 type也可以批量化声明 st ...

  9. 定义struct结构体数组

    题目要求: 有3个候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果. 解题思路: 设一个结构体数组,数组中包含3个元素 每个元素中的信息应包括候选人 ...

  10. C语言-轻松掌握|struct结构体|知识点

    目录 结构体的声明 1.结构体的基础知识 2.特殊的声明 3.结构体的自引用 了解数据结构-数据在内存的存储结构: 之前犯过一个错误案例 4.结构体变量的定义和初始化 定义和初始化​ 嵌套结构体​ 5 ...

最新文章

  1. 6G网络智能内生的思考
  2. [译] 如何使用纯函数式 JavaScript 处理脏副作用
  3. 055_Descriptions描述列表
  4. curl取跳转地址 php_PHP使用CURL获取302跳转后的地址实例
  5. 从Ubuntu命令行按进程名称杀死进程
  6. javafx基础教程_JavaFX教程–基础
  7. Mongoexport导出数据,Mongoimport导入数据,mongodump备份数据,mongorestore恢复恢复
  8. python 切片器_PowerBI-将日期显示为星期作为切片器
  9. 达梦数据库导入oracle数据_达梦数据库助力加速石油石化行业数字化转型升级
  10. java注解_Java注解
  11. 使用RAID 5虚拟磁盘时,dell的perc控制器H310的性能较差
  12. STM32cube配置编码器和电机
  13. 视频教程-DelphiXE10安卓开发(实战篇)-其他
  14. 用 gulp require.js 和 jQuery 写一个小米项目之-----滚动商品和下面商品加载的实现
  15. python四则运算表达式,用Python自动生成小学四则运算题目2.0版
  16. 快递行业面单打印解决方案-快宝云打印
  17. Promise中then的返回值
  18. Windows 10与微软公有云Azure
  19. Springboot使用Actuator健康监控以及可视化界面
  20. 王者的荣耀--Monza后记

热门文章

  1. Objective C 类变量的声明
  2. 计算机图形学常用算法
  3. 第一周前端web学习记录
  4. vite 设置启动Network 为本地ip
  5. pytorch报错:PicklingError: Can’t pickle <function at 0x000001EA6923EAF0>: attribute lookup on main fai
  6. php get 号,php-GET请求不带问号
  7. python金融编程入门_金融编程与量化金融—Python编程汇总
  8. 帝国cms 留言反馈 问题
  9. 帝国CMS[!--onclick--]标签动态显示页面点击数,解决刷新页面浏览量无变化的问题
  10. 插入摄像头时,系统右下角提示:无法识别的USB设备:跟这台计算机连接的一个USB设备运行不正常...