SystemVerilog的自定义类型和枚举类型(四)

本文详细介绍了如何在SystemVerilog中使用typedef创建用户自定义枚举类型,以及如何通过枚举类型进行数值操作、范围指定和包导入。还涵盖了枚举类型的基础概念、赋值规则和内置函数的应用,为状态机建模提供了实例。
  1. 使用typedef关键字来建立用户自定义类型。一个用户自定义数据类型可以是Verilog语言中任何合法的名称。为了使代码易读并便于维护,一般的命名习惯是使用"_t"作为所有用户自定义类型的结尾。

  2. 当枚举类型定义从包中导入时,只有类型名被导入,枚举列表中的数值标签不会被导入,所以要使用通配符导入整个包,才能使数值标签可见。

图1:
在这里插入图片描述

  1. 除了指定一组唯一的标签外,SystemVerilog提供了两种便捷方式可以在一个枚举类型列表中指定标签范围。
  • state —— 创建单个标签state
  • state[N] —— 创建标签序列,state0,state1,…stateN
  • state[N:M] —— 创建标签序列,有stateN开始,stateM结束。如果N小于M,序列由N增长至M。如果N大于M,序列由N减小至M。
// 下面的例子创建了一个枚举列表:带有标签RESET,S0~S5,W6~W9
enum {
   
   RESET,S[5],W[6:9]} state;
  1. 缺省情况下,枚举类型列表中的标签代表的实际数值是一个int类型的整数(32位)。枚举列表中的第一个标签表示数值0,第二个标签表示数值1,第三个标签表示数据2,以此类推。并不需要对枚举列表中的每个标签的值进行指定。如果没有指定,每个标签表示的值是前一个标签的值加上1。枚举中的各个标签必须具有唯一的值。如果有两个标签具有相同的值就会出现错误。
// B自动表示2,C自动表示3,Y自动表示25,Z自动表示26
enum {
   
   A=1, B, C, X=24, Y, Z} list1;
// C和D具有同样的值,所以错误
enum {
   
   A=1, B, C, D=3<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值