systemverilog中关系运算符的真值表

背景

在写sv的代码时,经常遇到==,!=,===,!==, &,|, &&,||这样的关系运算符,这些关系掌握的不清楚,每次用到都要搜索或者查书,但是很多网站多以文字描述,个人任务最好的是针对每个关系运算符出一个真值表,方便理解

对于每一种关系运算符,先搞清楚单比特运算是基础,多比特在单比特基础上做运算

1.“&" 按位与运算符

&01xz
00000
101xx
x0xxx
z0xxx

对于多比特数的&运算,把每一位相与,然后结果写下来,组成的数就是最终结果

2.”|“ 按位或运算符

|01xz
001xx
11111
xx1xx
zx1xx

对于多比特数的&运算,把每一位相或,然后结果写下来,组成的数就是最终结果


需要明确:“==”,“!=”,“===”,“!==” 最终的返回结果都是单笔特数

“==”和“!=” 运算符的返回值有0,1,x,z四种状态

“===”和“!==” 的返回值只有0和1两种状态

3. “==” 运算符

可以用于四值逻辑运算符的关系运算,四值逻辑即0,1,x,z

单比特运算逻辑:两个单比特数,如果为0或1,相等则返回1,不等返回0; 只要其中一个为x或z,结果为x

==01xz
010xx
101xx
xxxxx
zxxxx

多比特运算逻辑:

例子:(4'b1111 == 4'b111x1) 结果为x

           (4'b1010 == 4'b10x1) 结果为0

这样的结果也是符合逻辑的


4.“!=” 运算符

单比特运算逻辑:两个单比特数,如果为0或1,不等则返回1,相等返回0; 只要其中一个为x或z,结果为x

!=01xz
001xx
110xx
xxxxx
zxxxx

 多比特运算逻辑:

例子:(4'b1011 != 4'b1001) 结果为1

           (4'b1010 != 4'b10x1) 结果为1     

这样的结果也是符合逻辑的,因为不管x是什么,最后以为0和1都不会相等

5. “===” 运算符

===01xz
01000
10100
x0010
z0001

6.“!==” 运算符

===01xz
00111
11011
x1101
z1110

结论:

  1. ===和!==是将两边的数逐位进行比较,只要长得不一样,就算不相等
  2. === 运算符两边的数,只要有一位不一样,结果就为0,必须每一位都一模一样,才返回1,否则为0
  3. !==运算符两边的数,只要有一位一样,结果就为1,只有每一位全都一样,结果才为0

7. (待补充)

部分内容参考自大佬的文章:

【SystemVerilog基础】SystemVerilog语法之逻辑等(==)、全等(===)和匹配等(==?)_systemverilog ===-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值