枚举类型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

相关文章

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

C++11作用域枚举(Scoped Enums)的实现示例

《C++11作用域枚举(ScopedEnums)的实现示例》枚举类型是一种非常实用的工具,C++11标准引入了作用域枚举,也称为强类型枚举,本文主要介绍了C++11作用域枚举(ScopedEnums... 目录一、引言二、传统枚举类型的局限性2.1 命名空间污染2.2 整型提升问题2.3 类型转换问题三、C

Java 枚举的基本使用方法及实际使用场景

《Java枚举的基本使用方法及实际使用场景》枚举是Java中一种特殊的类,用于定义一组固定的常量,枚举类型提供了更好的类型安全性和可读性,适用于需要定义一组有限且固定的值的场景,本文给大家介绍Jav... 目录一、什么是枚举?二、枚举的基本使用方法定义枚举三、实际使用场景代替常量状态机四、更多用法1.实现接

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Python如何查看数据的类型

《Python如何查看数据的类型》:本文主要介绍Python如何查看数据的类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python查看数据的类型1. 使用 type()2. 使用 isinstance()3. 检查对象的 __class__ 属性4.