Verilog中==和===有什么区别?

29 verilog hdl

有什么区别:

if (dataoutput[7:0] == 8'bx) begin
Run Code Online (Sandbox Code Playgroud)

if (dataoutput[7:0] === 8'bx) begin 
Run Code Online (Sandbox Code Playgroud)

执行后dataoutput = 52'bx,第二个给出1,但第一个给出0.为什么?(0或1是比较结果.)

too*_*lic 25

Verilog中的一些数据类型,例如reg,4状态.这意味着每个位可以是4个值之一:0,1,x,z.

使用"case equality"运算符,===比较x,结果为1.

如上所述==,比较的结果不是0; 相反,结果是x,根据IEEE标准(1800-2009),第11.4.5节"平等算子":

对于逻辑相等和逻辑不等式运算符(==和!=),如果由于操作数中的未知或高阻抗位,关系是不明确的,则结果应为1位未知值(x).


小智 18

在Verilog中:

  • ==测试逻辑相等(测试1和0,所有其他将导致x)
  • ===测试4状态逻辑相等(测试1,0,z和x)


Kar*_*hah 5

==用于比较位(0或1)===用于比较所有4种状态(0、1,x,z)

==可以合成为硬件(x或非门),但是===不能合成,因为x不是数字中的有效逻辑电平,实际上电压在0到1之间。z不是本身没有任何逻辑,表明电路断开。

  • X是未知状态...上电时未复位的触发器的状态是什么?X。实际上可能是0或1。Z是未知的电压/浮动状态,就像没有任何输出连接到网络时所得到的一样。 (2认同)