有什么区别:
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).
==用于比较位(0或1)===用于比较所有4种状态(0、1,x,z)
==可以合成为硬件(x或非门),但是===不能合成,因为x不是数字中的有效逻辑电平,实际上电压在0到1之间。z不是本身没有任何逻辑,表明电路断开。