翻转启用等式的X值

时间:2018-04-11 08:26:04

标签: verilog

如果我在翻牌的启用等式中有x会怎样?

以翻译编码如下

为例
always @(posedge clock) begin
  if(en) q <= d;
end

因此,如果enx,则意味着reg q将保持其先前的状态而不会锁定新的状态(考虑x的语句是否计算为0 /假)或者它在sims中也是x吗? 这是根据使用的模拟器而变化的吗?

谢谢!

4 个答案:

答案 0 :(得分:2)

&#39;中的任何条件&#39;声明被视为2州。来自&#39; x&#39;的Verilog标准转换pr&#39; z&#39;到2国将产生&#39; 0&#39;。因此,如果&#39; en&#39;是&#39; x&#39;或者&#39; z&#39;,意味着它会持有。

因此,在回答您的问题时,if (en)将保留该值。

如果将4状态变量分配给2状态变量,即系统verilog也是如此,即&#39; bit&#39 ;;

答案 1 :(得分:1)

X-es将从任何FF输入传播到所有输出。事实上,它们倾向于像野火一样在整个设计中传播。如果输入为X,则多路复用器,算术,解码器几乎所有内容都会快速生成X. 有一些例外,如:

  • 一个输入为高电平的或门:即使另一个输入是&#39; X&#39;,输出也很高。
  • 一个输入为低电平的AND门:即使另一个输入是&#39; X&#39;,输出也很低。

但输入为0和X的双输入OR门将产生X.

X-es的传播定义明确,您应该在所有模拟器中找到相同的行为。

答案 2 :(得分:1)

为完整起见,SystemVerilog的最新标准IEEE1800-2012指定if条件的谓词中的值为'bx,该语句应评估为false,即与{{1}相同} en(见第12.4节)。这里的其他答案可以很好地理解该值在RTL设计的更大背景下的含义。

答案 3 :(得分:0)

由于 X 指的是未定义状态,因此在这种情况下输出预测是不可能的。因此,我们将从触发器获得 X 本身的输出。

如上文oldfart所述,如果是AND&amp;或门,输出取决于1和1的存在。 0个逻辑输入(分别在该门的任何其他输入端)。