我是靠谱客的博主 活泼煎蛋,这篇文章主要介绍Verilog中“==”和“===”的区别,现在分享给大家,希望可以做个参考。

“===”和“==”不同体现在对含有不定制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

2、“===”逻辑全等:

两个操作数逐位比较,对不定态与高阻态也要进行比较,当两个操作数完全一致时,其结果才为1,否则为0

$displayb ( 4’b01zx === 4’b01zx ); // 1
$displayb ( 4’b01zx !== 4’b01zx ); // 0
$displayb ( 4’b01zx === 4’b00zx ); // 0
$displayb ( 4’b01zx !== 4’b11zx ); // 1

最后

以上就是活泼煎蛋最近收集整理的关于Verilog中“==”和“===”的区别的全部内容,更多相关Verilog中“==”和“===”内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(121)

评论列表共有 0 条评论

立即
投稿
返回
顶部