“如果”在始终块的灵敏度列表中始终为OR条件?

时间:2016-03-11 05:19:49

标签: verilog

这两个代码的行为方式是否相同?

always @(a == 1'b1) // I guess for this one, it's like a combinational if (AND gate logic : a AND 1).
    // code

always @(a) begin // I guess for this one, if a= 1 from the time 0,
                  // it won't go inside since there wouldn't be any change.
    if (a == 1) begin
    // code
    end
end

是真的吗?

这是一个基本问题,但我想知道我是否遗漏了一些东西,谢谢!

1 个答案:

答案 0 :(得分:0)

不,两者都不相同。

  

请注意,敏感度列表中的变量被视为事件   因此它们不会被执行,而只是改变变量   被认为是该事件的触发因素。

所以第一个总是阻止

always @ (a==1'b1)

与:

相同
always @ (a)

所以 1st always block 将执行同时a = 1& 0 ,而在第二种情况中,因为"如果"条件,只有a = 1

才会执行