Verilog的数据类型
实际硬件世界中没有数据类型的概念;人类只不过为了创造了一种硬件语言,并将数据类型置于其中。
硬件语言中有2种类型数据:
- reg类型:存储值
- wire类型:不能存储值
基于这2种基本的物理数据类型(reg对应寄存器,wire对应连线),引申出广义的数据类型:例如有符号数、无符号数、浮点数等。
SystemVerilog数据类型
SystemVerilog在Verilog的硬件世界中扩展出软件世界,对应的就是将硬件世界的2种数据类型归一为logic类型,因为对于验证人员不需要区分这2种类型,验证代码不需要考虑是否可被综合成具体电路。
SystemVerilog进入的是软件世界,那对应的数据类型也得到扩充。这里也便要提到2-state类型和4-state类型,4-state类型对应值有0、1、x、z,2-state类型对应值仅有0、1。
我们先来介绍下4-state的数据:
- 真实电路数据类型,logic、reg、wire;
- 非真实电路数据和类型,interger、time;
真实的电路数据类型中,由于电路特性必然是4-state;
需要记住interger类型也是4-state,和int不一样;
time居然也是4-state,需要待确认。
其余的数据类型都是2-state类型,出了2-state和4-state需要区分,我们还需要区分有符号和无符号数据。真实电路数据根据用户自行定义是否为有无符号,其余我们在下面细说。
整数类型
类型 | 位宽 | 符号 |
---|---|---|
bit | 1 | 无 |
byte | 8 | 有 |
shotint | 16 | 有 |
int | 32 | 有 |
longint | 64 | 有 |
interger | 32 | 有 |
Void、null、chandle
void用于function没有返回值
null用于变量比对时候为空
chandle数据类型用于存储指针