0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SystemVerilog中至关重要的的数据类型

jf_78858299 来源:芯片学堂 作者:JKZHAN 2023-01-21 17:14 次阅读

对于刚接触SV的小伙伴来说,SV有几种不怎么能引起关注,但在实际工作中又经常会用到的数据类型。它们就是枚举(enumeration)、结构体(structures)和自定义类型(typedef)。

这三种数据类型的合理应用能够处理不同逻辑结构的数据,提高代码编写效率和可读性。本文先讲枚举类型的使用语法和一些注意的点。

认识枚举类型

枚举指的是一组有限的被赋予了名字的值的集合。在默认情况下,集合中元素的数据类型是int类型,元素值的大小是从0开始的递增关系。当然,元素的数据类型和值都是可以用户自定义的。

枚举类型在日常生活中很常见,比如春夏秋冬就是表示季节的枚举集合,周一到周天就是表示星期的枚举集合。可以看出,枚举的重要作用,就是为了方便区分和使用。

打个比方,在正常交流时,我们会说现在在冬天,而不会故意去说现在是第4季。同样,当我们使用代码来描述有限集合,比如描述状态机各个状态的时候,使用名字可以大致表达不同状态的行为,代码可读性自然也就提高了。

枚举在代码中实现的功能跟使用宏类似,都可以用名字来代替数值。宏是在预处理阶段将名字换成了值,而枚举是在编译阶段将名字换成值。也就是说,枚举类型的这些名字不是变量,它们不会占据任何内存。且这些名字的有效范围是全局的,如果有变量等命名冲突了可能导致编译不过。

枚举类型的使用

SV的枚举类型声明语法跟C语言很像。如果自增的值与已经自定义的值产生冲突,会导致编译不过;如果枚举名以数字开头,也会导致编译不过。另外,SV为枚举变量还提供了一系列的内建方法(first/last/next/prev等),用来方便对枚举变量进行索引等操作。

在SV中还明确说明了枚举类型是一种强类型(strongly typed)的数据类型。如果给一个枚举变量直接赋一个数值,这个数值不管是不是在枚举范围内,都是不允许的。这种类型检查是为了防止用户乱赋值。不过,SV是允许使用显式类型转换(explicit cast)来完成这种赋值的。

此外,SV允许枚举变量写到数值表达式中进行数值计算,枚举名可以当常量使用。这个时候枚举变量会被自动转换成对应的整型数字之后,再继续完成数值计算。不过当计算结果想要重新赋值给枚举变量的时候,依然需要进行显式的类型转换。

都在代码里

下面代码和注释总结了以上介绍的枚举类型的使用方法和限制,个人觉得掌握例程中的内容对工作来说已经完全足够啦,但例程我还没有经过编译哈。

图片

参考文献

[1] IEEE Standard Association. "IEEE Standard for SystemVerilog-Unified Hardware Design, Specification, and Verification Language." (2013).

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据类型
    +关注

    关注

    0

    文章

    236

    浏览量

    13596
  • 结构体
    +关注

    关注

    1

    文章

    129

    浏览量

    10824
  • 枚举
    +关注

    关注

    0

    文章

    16

    浏览量

    4570
收藏 人收藏

    评论

    相关推荐

    为什么DSP对音频设计至关重要

    DSP和音频解码是实现当今消费者期望的高质量音频的关键要素。这篇博客将是讨论这一主题的系列博客的第一篇。首先简述DSP为什么对音频设计至关重要。在真正开放的空间中,大自然提供了无限数量的音频通道
    发表于 10-30 11:41

    天线系统在NFC设备至关重要

    天线系统在NFC设备至关重要。一般来讲,对工作在13.56MHz的NFC系统进行成功设计不仅需要对发射和接收天线进行电磁仿真,还需要将分立组件(包括将射频功率转换为直流信号的整流桥)包含进设计
    发表于 07-17 07:33

    示波器衡量指标至关重要但常被忽略的两个概念是什么?

    示波器衡量指标至关重要但常被忽略的两个概念是什么?
    发表于 05-12 06:49

    浅析System Verilog的整数数据类型

    Data TypesVerilog提供了reg和wire数据类型,但是对于功能验证来说远远不够,所以SystemVerilog提供了很多更加丰富的数据类型,下面将一一介绍。我们先来考古下,一开始
    发表于 10-11 14:15

    SpinalHDLBundle与普通数据类型之间的连接赋值转换

    SpinalHDLBundle与SystemVerilog的packed struct很像,在某些场景下,与普通数据类型之间的连接赋值可以通过asBits,assignFromBi
    发表于 10-18 14:22

    51单片机数据类型解析

    数据类型数据结构的定义是一个值的集合以及定义在这个值集上的一组操作。数据类型包括原始类型、多元组、记录单元、代数
    发表于 11-16 08:45 2.4w次阅读
    51单片机<b class='flag-5'>中</b>的<b class='flag-5'>数据类型</b>解析

    vhdl数据类型

    VHDL的标识符可以是常数、变量、信号、端口、子程序或参数的名字。VHDL数据类型可以分成四大类: 标量型(SCALAR TYPE):属单元素的最基本的数据类型,通常用于描述一个
    发表于 03-30 15:59 11次下载

    数字硬件建模SystemVerilog-枚举数据类型

    上一节介绍了已经被淘汰的$unit声明空间,今天我们来看看一种重要数据类型-枚举数据类型
    的头像 发表于 07-01 17:44 1665次阅读

    asBits函数如何转换成Bits数据类型

    SpinalHDLBundle与SystemVerilog的packed struct很像,在某些场景下,与普通数据类型之间的连接赋值可以通过asBits,assignFromBi
    的头像 发表于 10-17 09:53 794次阅读

    SpinalHDLBundle数据类型的转换

    SpinalHDLBundle与SystemVerilog的packed struct很像,在某些场景下,与普通数据类型之间的连接赋值可以通过asBits,assignFromBi
    的头像 发表于 10-17 09:51 1269次阅读

    SystemVerilog$cast的应用

    SystemVerilog casting意味着将一种数据类型转换为另一种数据类型。在将一个变量赋值给另一个变量时,SystemVerilog要求这两个变量具有相同的
    的头像 发表于 10-17 14:35 2772次阅读

    关于有符号数据类型的示例

    我们学习一下Systemverilog的有符号数据类型的赋值。
    的头像 发表于 10-17 14:40 966次阅读

    SystemVerilog的struct

    SystemVerilog“struct”表示相同或不同数据类型的集合。
    的头像 发表于 11-07 10:18 2367次阅读

    SystemVerilog至关重要的结构体和自定义类型

    在上一篇文章《SystemVerilog至关重要的的数据类型,介绍了枚举类型的本质和使用语
    的头像 发表于 01-21 17:18 2013次阅读
    <b class='flag-5'>SystemVerilog</b><b class='flag-5'>中</b><b class='flag-5'>至关重要</b>的结构体和自定义<b class='flag-5'>类型</b>

    plc数据类型怎么理解和应用

    PLC(可编程逻辑控制器)是一种工业自动化设备,用于控制机械和工业过程。在PLC编程数据类型是非常重要的概念,因为它决定了程序数据的存
    的头像 发表于 12-19 11:39 3930次阅读