我试图弄清楚推断的闩锁以及内部需要它的原因,但我找不到任何具有足够详细信息的资源。
最佳答案
当组合逻辑的输出具有未定义的状态时,会推断出锁存器,即它必须保持其先前的值。
组合逻辑没有任何触发器来保持状态,因此输出应始终由输入定义。
一个简短的例子可能是:
always @* begin
if (a == 1'b1) begin
b = x|y|z;
end
end
什么是
b
当a == 1'b0
. b
没有被覆盖,因此它将保持其值(value)。没有状态的概念,怎么可能保值。您必须通过推断闩锁来引入状态。这通常是一件非常糟糕的事情。您可以暗示锁存器并注意时序等,但推断的锁存器名义上来自错误代码。
关于verilog - 什么是推断锁存器以及在 if 条件中缺少 else 语句时它是如何创建的。谁能简要解释一下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22459413/