SystemVerilog不可忽略的数据类型2--结构体

在上一篇文章《SystemVerilog不可忽略的数据类型》中,介绍了枚举类型的本质和使用语法。本文接着介绍SV中同样不可忽略的结构体(structure)和自定义类型(typedef),最后也会给出一小段涵盖绝大部分语法点的例程。个人觉得编程语言的熟练掌握更多在平时练习和思考,语法忘掉了随时可以查阅。

认识结构体

结构体(structure)是一种可以包含不同数据类型元素的集合类型。这一点跟数组、队列等集合类型是不一样的,数组和队列只能包含相同数据类型的元素。结构体在引用的时候,可以对这些元素进行整体引用,也可以通过元素名称来对元素进行单独引用。

基于这个特性,结构体通常可以用来表征一个包含了诸多不同类型属性的对象。比如,当我们想要表征一个人的所有属性的时候,名字元素可以用string类型,年龄元素可以用int类型,存款元素可以用real类型等等,最后可以通过对整体引用来获得一个人的所有属性,也可以通过元素名称来获得单个属性。
另一个栗子,可以使用结构体来定义某个寄存器的结构。在结构体类型定义的时候,我们可以在内部使用logic [n:m]等基本数据类型来定义寄存器的不同域段。这样一来,我们不但可以对寄存器进行整体引用,又可以使用元素名来很方便地读写寄存器的各个域段。

讲完结构体的逻辑结构,下面来看看结构体的物理结构。
在内存存储一个结构体的时候,SV提供了packed关键字用来区分合并(packed)和非合并(unpacked)存储方式。“合并”这个概念在另一篇文章《SystemVerilog的那些数组》中也有涉及。合并的结构体,其元素会被无间隙的存放到一块连续的内存空间上。而非合并的结构体,其物理结构一般依赖于C编译器。SV默认是非合并的,这是为了提

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值