Verilog中“==”和“===”的区别

Verilog 中的 '==' 和 '===' 在处理不定制X和高阻态Z数据时有所不同。'==' 不识别X/Z,相同位(除X/Z外)输出1,不同位输出0;'!=' 则相同情况输出0,不同位输出1。而 '===' 和 '!===' 将X/Z视为普通元素比较,完全一致时 '===' 输出1,否则0。这涉及到逻辑相等与逻辑全等的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

“===”和“==”不同体现在对含有不定制X和高阻态Z数据的处理中:

先说结论:

  • ==为逻辑相等,没有x/z时相同输出1,不同输出0;有x/z时,若其余位相同,输出是x,其余位不同,输出为0;
  • !=为逻辑不等,没有x/z时相同输出0,不同输出1;有x/z时,若其余位相同,输出是x,其余位不同,输出为1;
  • ===与!==为逻辑全等和逻辑不全等,x/z当作普通元素处理。

本质:

===与!==将x/z按照普通元素看待,进行比较;

==不能识别x/z,其余位相同时,因为存在x/z位无法判断比较结果,输出x;反之,其余位不同,可以直接判断比较结果不等,输出为0;

!=不能识别x/z,其余位相同时,因为存在x/z位无法判断比较结果,输出x;反之,其余位不同,可以直接判断比较结果不等,输出为1;

1、“==”逻辑相等:

两个操作数逐位比较,不识别不定态‘x’或者高阻态’z’:

$displayb ( 4’b0011 == 4’b1010 ); // 0
$displayb ( 4’b0011 == 4’b0011 ); // 1


$displayb ( 4’b1010 == 4’b1x10 ); // x
$displayb ( 4’b0x10 == 4’b1x10 ); // 0
$displayb ( 4’b1z10 == 4’b1z10 ); // x

$displayb ( 4’b0011 != 4’b1x10 ); // 1
$displayb ( 4’b1x10 != 4’b1x10 ); // x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值