1.1 内建数据类型
Systemverilog与Verilog的一个重大不同就是:引入了新的数据类型,便于数字电路的设计与验证。
SV中将reg与wire类型统一改进为logic,logic是四值逻辑类型。
那么,reg和wire两种数据类型有什么区别呢?什么又是二值逻辑和四值逻辑类型呢?
先回答第一个问题,回想在Verilog设计中的知识,我们通常出现以下类似的code(仅做参考):
//Verilog
module Device_1 (
input [2:0] a,
ouput reg [7:0] b,
output reg [7:0] c,
wire X
);
''''''
//Systemverilog defination
logic [7:0] b, c;
上述的示例代码中,定义输出变量b,c的同时,又将两者定义为reg。我们可以这样思考,作为输出变量,在输出过程的最后将会保存设计的输出值,相当于一个寄存器,而reg就是相当于寄存器,开辟存储空间,存放数值。更加细节的是,Verilog中数值结果输出与SV中的数值输出方式也是不同的,关于此问题我们将在后续的分享中提及。
我们在Verilog中这样驱动并使用wire类型:
......
wire X;
assign X = b && c;
......
wire本身就是无逻辑的物理连线,使用连续性赋值语句assign驱动。
综上,reg是寄存器,可以用来存放数据;wire是无逻辑的物理连线,不具有存储功能。
第二个问题,什么是二值和四值逻辑?所谓的二值逻辑是指变量的输出只有0和1两种结果,四值逻辑是指变量的输出具有0,1,X和Z四种结果。
二值逻辑类型:logic、wire、reg、time和 integer。
四值逻辑类型:bit、byte、int(short int/long int),real。
逻辑类型介绍完毕,欢迎您批评指正!下次我们来讲解关于SV中数组的知识。