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

时间:2011-05-08 13:07:55

标签: verilog hdl

有什么区别:

if (dataoutput[7:0] == 8'bx) begin

if (dataoutput[7:0] === 8'bx) begin 

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

3 个答案:

答案 0 :(得分:24)

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

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

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

  

对于逻辑相等和逻辑   不等式运算符(==和!=),如果,   由于未知或高阻抗位   在操作数中,关系是   暧昧,那么结果应该是一个   1位未知值(x)。

答案 1 :(得分:18)

在Verilog中:

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

答案 2 :(得分:5)

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

==可以合成为硬件(x-nor gate),但是= =不能合成,因为x不是数字中的有效逻辑电平,它实际上具有介于0和1之间的电压并且z本身不是任何逻辑,它表示电路断开。