它们之间的区别是什么:
if (dataoutput[7:0] == 8'bx) begin和
if (dataoutput[7:0] === 8'bx) begin 在执行dataoutput = 52'bx之后,第二个返回1,但第一个返回0。为什么?(0或1是比较结果。)
发布于 2011-05-09 01:35:42
Verilog中的一些数据类型,例如reg,是4状态的。这意味着每个比特可以是4个值之一: 0,1,x,z。
使用“大小写相等”操作符,===,x进行比较,结果是1。
对于==,正如您所说的,比较的结果不是0;相反,根据IEEE标准(1800-2009)第11.4.5节“相等运算符”,结果是x:
对于逻辑相等和逻辑不等运算符(==和!=),如果由于操作数中的未知或高阻抗位,关系不明确,则结果应为1位未知值(X)。
发布于 2011-05-08 21:58:37
在Verilog中:
发布于 2014-12-09 11:34:24
用于比较位(0或1)的== ===用于比较所有4个状态(0,1,x,z)
==可以合成到硬件中(x-nor门),但===不能合成,因为x不是数字中的有效逻辑电平,它实际上具有介于0和1之间的电压。z本身也不是任何逻辑,它表明电路断开。
https://stackoverflow.com/questions/5927615
复制相似问题