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