1.内建的数据类型
1.1 logic类型:
任何需要线网的地方都可以用logic;
但是不能有多个结构性驱动。多驱动与双向总线只能用wire
是四状态。
1.2 双状态的数据类型:目的为了提高仿真器的性能并且减少内存的使用量。
双状态:0、1 四状态:0、1、x 、z
2.使用typedef创建新的类型
typedef int fixed_array5[5]; //创建了新的数据类型
fixed_array5 f5; //f5是这种数据类型
initial begin //对f5进行初始化
foreach(f5[i])
f5[i]=i;
end
3.枚举类型 (enum)
打个比方,在正常交流时,我们会说现在在冬天,而不会故意去说现在是第4季。同样,当我们使用代码来描述有限集合,比如描述状态机各个状态的时候,使用名字可以大致表达不同状态的行为,代码可读性自然也就提高了。枚举在代码中实现的功能跟使用宏类似,都可以用名字来代替数值。宏是在预处理阶段将名字换成了值,而枚举是在编译阶段将名字换成值。也就是说,枚举类型的这些名字不是变量,它们不会占据任何内存。且这些名字的有效范围是全局的,如果有变量等命名冲突了可能导致编译不过。
4. 结构体(struct) 创建用户自定义结构
由于struct只是一个数据的集合,所以他是可综合的。
typedef struct{包含内容} 自定义结构名字 ;
5.定宽数组
5.1定宽数组的声明和初始化
int lizi [0:15]; //16个整数[0].....[15]
int lizi_2 [15] //上同
//声明多维数组
int array1 [0:7][0:3];
int array2 [8][4];
array2[7][3] //设置最后一个元素
5.2基本数组操作 for与foreach
后边补充
5.3合并数组与非合并数组
bit [3:0] [7:0] bytes; //4个字节组成的32比特
bit [7:0] b_unpack[3]; //非合并数组,三个字节空间
5.4动态数组
如果在运行程序之间都不知道数组的宽度,并且为了节省空间,运用动态数组。
声明动态数组需要使用空的[ ],在用的时候用new[ 数组宽度] 调用空间
5.5关联数组
(不大懂)
当需要创建一个超大的数组时,运用关联数组来保存稀疏矩阵的元素。
5.6队列的操作 [$]
结合了链表和数组的优点,可以在队列的任何一个地方增加或者删除元素。