一、Verilog硬件语言有两种四值(四态)逻辑的基本类型:变量(variable)和线网(net)。
四值(四态)逻辑:可以表示0(低电平)、1(高电平)、X(未知值、不定态)和Z(高阻值)四种值。有logic、reg、integer、time、net-type(wire、tri)。
注:
真实电路中并无X,它只是用来表示不确定的状态,即不确定它到底是0还是1,但它要么是0要么就是1,不存在所谓的“中间态”。
高阻态Z在驱动里表示没有驱动,悬空。
二值(二态)逻辑:只能表示0(低电平)、1(高电平)两种值。有bit(1位)、byte(8位,8-bit)、shortint(16-bit)、int(32-bit)、longint(64-bit)。
四值逻辑和二值逻辑之间可以互相转换:四值逻辑在转换成二值逻辑时,X和Z会转换为0。
四值逻辑变量(reg、logic、integer等)在仿真开始时的初始值为X;
二值逻辑变量在仿真开始时的初始值为0.
有符号数:byte、shortint、int、longint、integer
无符号数:bit、reg、logic、net-type(wire、tri)--单个构成的向量vector
在表达式中integer的值作为有符号数来处理,而reg和time的值作为无符号数处理。
reg用来描述逻辑;
integer用来描述循环变量和计算;
real在系统模型中使用;
time和realtime保存测试装置的仿真时间。
int和integer的区别:前者是两态逻辑,后者是四态逻辑。四态逻辑需要一个额外的位来编码X和Z状态。两态数据类型的仿真速度更快一些,而且占用的内存更少。
变量类型:reg、integer、time等可以用来存储组合逻辑或者时序逻辑的值。
SV代码中通常用var来表示。
线网类型:wire、wor、wand等可以用来连接硬件模块,以及提供特殊的线网逻辑解决方案。
SV代码中通常用wire来表示
延伸:reg可被综合成触发器flip-flop和锁存器latch
1、触发器:对时钟边沿敏感的存储单元,它是在时钟的上升沿或者下降沿进行数据的锁存,具有记忆功能。它能够存储一位二进制码。
2、锁存器:对脉冲电平敏感的存储单元,用脉冲电平的使能来进行数据的锁存,具有记忆功能。
3、寄存器(register):能够用来存储一组二进制代码的同步时序逻辑电路。把n个触发器的时钟端口连接起来就能构成一个存储n位二进制代码的寄存器。
Verilog中变量类型只能用过程赋值来赋值。它保存在initial、always、task、function内。
二、SystemVerilog将硬件信号分为类型和数据类型。
Verilog中没有数据类型这一概念,只有变量类型和线网类型。
类型:表示该信号为变量(var--variables)类型或者线网类型(nets指大类,代码中常见用wire来表示)。
数据类型:表示该数据是四态逻辑logic还是二态逻辑bit
Verilog和SV中类型赋值的区别:
Veirlog:
变量类型(var)只能使用过程赋值(过程块initial、always) |
线网类型(wire)只能使用连续赋值(赋值语句assign) |
SV:
变量类型(var)既可以使用过程赋值,也可以使用连续赋值(过程块initial、always) |
线网类型(wire)只能使用连续赋值(赋值语句assign) |
SV中声明变量时如果没有特别指定,如logic [3:0] a(a是一个向量vector,有4位,每一位都可表示为0,1,X,Z),那么此变量默认类型为var(变量类型)
testbench中大多数情况都使用logic类型变量,很少使用wire。当超过一个驱动源或者设计的模块端口是双向(inout)的时候,则会使用wire。文章来源:https://www.toymoban.com/news/detail-697393.html
如下代码表明logic既可以是变量类型var也可以是线网类型wire:文章来源地址https://www.toymoban.com/news/detail-697393.html
module tb;
wire w1;
logic r1;//此处logic未声明类型,默认是变量类型var
assign w1 = 1'b1;
assign r1 = 1'b0;
wire logic w2;//logic是线网类型wire
var logic r2;
assign w2 = 1'b1;
assign r2 = 1'b0;
initial begin
#1ns;
$display("w1 = %b, r1 = %b", w1, r1);
$display("w2 = %b, r2 = %b", w2, r2);
end
endmodule
到了这里,关于SV芯片验证之数据类型(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!