-
使用typedef关键字来建立用户自定义类型。一个用户自定义数据类型可以是Verilog语言中任何合法的名称。为了使代码易读并便于维护,一般的命名习惯是使用"_t"作为所有用户自定义类型的结尾。
-
当枚举类型定义从包中导入时,只有类型名被导入,枚举列表中的数值标签不会被导入,所以要使用通配符导入整个包,才能使数值标签可见。
图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;
- 缺省情况下,枚举类型列表中的标签代表的实际数值是一个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<

本文详细介绍了如何在SystemVerilog中使用typedef创建用户自定义枚举类型,以及如何通过枚举类型进行数值操作、范围指定和包导入。还涵盖了枚举类型的基础概念、赋值规则和内置函数的应用,为状态机建模提供了实例。
最低0.47元/天 解锁文章
1731

被折叠的 条评论
为什么被折叠?



