-1

为什么下面的代码不推断闩锁?

如果 d 和 rst 都为 "0" ,工具如何知道分配给 "e" 的内容?

module tmp(input d,
        input clk,
        input rst,
        output reg o,
        output reg e);

 always@(posedge clk)
         if(rst) begin
               o <=0;
               e <= 1;
               end
         else if(d) begin
                     o<=1;
                     e<=0;
               end
          else
                    o <=1;
endmodule
4

1 回答 1

2

您的总是块模型顺序逻辑(即带有触发器的逻辑)。如果drst都是1'b0,则不会执行任何分配给 to 的代码行e。因此,e将保留(即记住)其先前的值。不过没关系,因为e会被合成为 D 型触发器。触发器有状态,它们有(是)存储。不需要闩锁。

于 2017-04-03T14:55:19.660 回答