本文主要是介绍二值逻辑和四值逻辑——systemverilog,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
systemverilog中常用的数据类型
SV中引入了二值逻辑(取值0和1)的变量,这样可以减小仿真时的内存消耗。
类型 | 数据类型 |
---|---|
四值逻辑 | integer logic reg net-type(如 wire 和 tri ) |
二值逻辑 | bit byte shortint int longint |
无符号位 | logic bit reg net-type(如 wire 和 tri ) |
有符号位 | byte(8bit) shortint(16bit) int(32bit) longint(64bit) integer(32bit) |
不同数据类型的所占的内存大小不同,其变量取值范围需要考虑是不是具有符号位。
数据类型 | 所占空间 | 取值范围 |
---|---|---|
bit | 1 bit | 0和1 |
logic | 2bit | 0、1、x、z |
reg | 2bit | 0、1、x、z |
wire | 2bit | 0、1、x、z |
byte | 8bit | -27 ~ 27-1的整数 |
shortint | 16bit | -215 ~ 215-1的整数 |
int | 32bit | -231 ~ 231-1的整数 |
integer | 32bit | integer 是四值逻辑, |
longint | 64bit | -263 ~ 263-1的整数 |
这里为了方便理解,如下:
byte c2; //和下面的等价
bit signed [7:0] c2;integer i1; //和下面的等价
logic signed [31:0] i1;
有符号位的数据类型也可以变为无符号位的,如下:
int unsigned ui; //双状态,32比特无符号整数
int i //双状态,32比特有符号整数
PS:
一、进制转换的关系,如下:
-
8位二进制 = 1字节( byte );
-
1位十六进制 = 4位二进制
-
2位十六进制 = 8位二进制 = 1字节(byte)
-
8位十六进制 = 4 字节(byte)
二、尽量避免两种不一致的变量进行操作,如果操作符两侧的符号类型不一致,要先将其转换为同一类型再进行运算。 -
四值逻辑 --> 二值逻辑 时, x 和 z 值会变成 0 值;
-
有符号位 --> 无符号位 时,会直接向最高位扩展一位符号位;
这篇关于二值逻辑和四值逻辑——systemverilog的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!