"If"始终块的敏感度列表中的 ALWAYS OR 条件内?



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

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

是真的吗?

这是一个基本问题,但我想知道如果我错过了什么,谢谢!

不,两者都不一样。

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

所以第一个总是阻止

always @ (a==1'b1)

与 相同:

always @ (a)

所以第一个总是块将以a = 1和0执行,而在第二种情况下,由于"if"条件,它将仅在a = 1的情况下执行

最新更新