- wire型---线网nets型数据
(1)表示组合逻辑信号,可类比为电路中的导线
(2)不能存储数据,有输入才有输出,输出随输入改变而改变
(3)一般使用assign语句对wire型数据进行驱动
(4)一般在使用wire型数据前应先声明。如果在模块实例的端口信号列表中使用了一个未声明的变量,则会将其默认定义为1位的wire变量。
- reg型
(1)寄存器数据类型,具有存储功能
(2)一般在always块内使用reg型变量,通过赋值语句来改变寄存器中的值
(3)reg型变量不能使用assign赋值
- 数字字面量
(1)表示为:<位宽>'<进制><值>
(2)省略位宽时采用默认位宽(与机器有关,一般为32位),省略进制时默认为十进制
(3)值部分可以用下划线分开提高可读性
- integer型
(1)数据类型一般为32位,与 C 语言中的int类似,默认为有符号数
(2)主要用于for循环
- parameter型
(1)用于在编译时确认值的常量
(2)表示为:parameter 标识符 = 表达式;
wire[7:0] w1;
// [7:0] 为该变量的位宽,代表该变量为 8 位,可以通过索引访问任意一位。
wire[32:1] w2, w3;
// 位宽可以不从 0 开始,此时访问某一位时需与声明相符,如 w2 的最高位为 w2[32]。
reg[31:0] r1, r2, mem[1023:0];
// 可以同时声明存储器和单个 reg,存储器的地址索引同样可以不从 0 开始。
2'b11; // 2 位,对应十进制 3
32'd12; // 32 位,对应十进制 12
32'h11; // 32 位,对应十进制 17
32'o11; // 32 位,对应十进制 9
4'b10x0; // 从低位数第 2 位为不定值