verilog - 什么是推断锁存器以及在 if 条件中缺少 else 语句时它是如何创建的。谁能简要解释一下?

标签 verilog

我试图弄清楚推断的闩锁以及内部需要它的原因,但我找不到任何具有足够详细信息的资源。

最佳答案

当组合逻辑的输出具有未定义的状态时,会推断出锁存器,即它必须保持其先前的值。

组合逻辑没有任何触发器来保持状态,因此输出应始终由输入定义。

一个简短的例子可能是:

always @* begin
  if (a == 1'b1) begin
    b =  x|y|z;
  end
end

什么是ba == 1'b0 . b没有被覆盖,因此它将保持其值(value)。没有状态的概念,怎么可能保值。您必须通过推断闩锁来引入状态。这通常是一件非常糟糕的事情。

您可以暗示锁存器并注意时序等,但推断的锁存器名义上来自错误代码。

关于verilog - 什么是推断锁存器以及在 if 条件中缺少 else 语句时它是如何创建的。谁能简要解释一下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22459413/

相关文章:

verilog - 是否有系统 verilog 任务返回 reg/logic 的长度?

vhdl - 是否可以在FPGA上设计较小的FPGA?

verilog - 错误 : (vlog-2110) Illegal reference to net "code"

c - IEEE 单精度浮点格式

tdd - 在Verilog或VHDL中进行逻辑(芯片)设计的测试驱动开发(TDD)的经验

verilog - 如何实现超过一个时钟周期的时序逻辑?

verilog - 如何访问模块内的内部 reg?

verilog - iverilog 模拟器如何解释我的 RAM 代码以确定 'x' 值?

verilog - 道格拉斯·史密斯 (Douglas Smith) 的 "HDL Chip Design"中的错误是否已得到纠正?

verilog - Verilog/SV中是否有类似casex的ifx-elsex语句?