枚举类型enum——systemverilog

2024-02-13 09:48

本文主要是介绍枚举类型enum——systemverilog,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

enum的基础语法

enum提供方法来描述抽象变量的合法值范围,其每个值都需要提供一个用户自定义的名字

enum{red,green.blue} RGB;  
// RGB是一个枚举类型变量
// red,green.blue是枚举常量

枚举数据默认(缺省类型)的存储类型为int型(32位有符号二值逻辑),且数值从0开始递增 。

枚举类型也可以直接赋初值

enum logic [2:0] {WAITE = 3'b001,LOAD = 3'b010,READY = 3'b100} state_t;

枚举类型是四值逻辑,直接对枚举值赋值X 、Z也是合法的

​ 如:enum logic {ON = 1’b1,OFF = 1’bz } out;

enum和typedef搭配使用

便于用户自定义枚举类型的共享使用,可以用同一个枚举类型来声明多个变量或线网

typedef enum  {INIT,DECODE,IDLE}  fsmstatae_e;  
//fsmstatae_e 表示是 enum  {INIT,DECODE,IDLE} 这个**类型**
//INIT,DECODE,IDLE的整型分别是 0,1,2
fsmstatae_e  pstate, nstate;  //声明2个变量case (pstate)IDLE: nstate = INIT;  INIT:nstate = DECODE;default:nstate = IDLE;endcase$display ("Next state is %s", nstate.name()); //显示状态名 ;%s是以字符串形式

【注意】:

  • 如果给nstate直接用整数赋值,那么这种赋值方法不合法
  • 如果右侧是枚举类型,可以直接赋值给整型,即int = enum 型式成立
  • 如果右侧是整型,不可以直接赋值给枚举 ,即enum = int 不成立;必须要做类型转换 enum = T’(int);
  • 如果枚举类型没有伴随typedef,那么该枚举类型是一个匿名枚举类型
//例子1:typedef enum  {WAITE,LOAD ,READY }  state_t;
state_t state ,next_state;
int foo;state = next_state; //合法
foo =  state + 1;      // 合法  ,枚举类型可以转化成整型
state = foo + 1 ;     //不合法 ,整型不能隐式的转化成枚举类型
state = state +1;    //不合法
state++;				  // 不合法,内部包含一个state= state +1//例子2:typedef enum  {WAITE,LOAD ,READY } state_t;
int sum = WAITE + LOAD + READY;    // sum的结果为 3  

这篇关于枚举类型enum——systemverilog的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/705182

相关文章

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

Redis的Zset类型及相关命令详细讲解

《Redis的Zset类型及相关命令详细讲解》:本文主要介绍Redis的Zset类型及相关命令的相关资料,有序集合Zset是一种Redis数据结构,它类似于集合Set,但每个元素都有一个关联的分数... 目录Zset简介ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZ

IDEA如何将String类型转json格式

《IDEA如何将String类型转json格式》在Java中,字符串字面量中的转义字符会被自动转换,但通过网络获取的字符串可能不会自动转换,为了解决IDEA无法识别JSON字符串的问题,可以在本地对字... 目录问题描述问题原因解决方案总结问题描述最近做项目需要使用Ai生成json,可生成String类型

C#实现获得某个枚举的所有名称

《C#实现获得某个枚举的所有名称》这篇文章主要为大家详细介绍了C#如何实现获得某个枚举的所有名称,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... C#中获得某个枚举的所有名称using System;using System.Collections.Generic;usi

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

Java 枚举的常用技巧汇总

《Java枚举的常用技巧汇总》在Java中,枚举类型是一种特殊的数据类型,允许定义一组固定的常量,默认情况下,toString方法返回枚举常量的名称,本文提供了一个完整的代码示例,展示了如何在Jav... 目录一、枚举的基本概念1. 什么是枚举?2. 基本枚举示例3. 枚举的优势二、枚举的高级用法1. 枚举

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET

Rust中的Option枚举快速入门教程

《Rust中的Option枚举快速入门教程》Rust中的Option枚举用于表示可能不存在的值,提供了多种方法来处理这些值,避免了空指针异常,文章介绍了Option的定义、常见方法、使用场景以及注意事... 目录引言Option介绍Option的常见方法Option使用场景场景一:函数返回可能不存在的值场景