如何在Verilog中解释阻塞与非阻塞分配?

对于绘制硬件图时如何解释阻塞和非阻塞分配,我有些困惑。我们是否必须推断出非阻塞分配会给我们一个寄存器?那么根据此陈述c <= a+b ,c将是注册权,而不是a和b?


module add (input logic clock,  

output logic[7:0] f);   


logic[7:0] a, b, c;  


always_ff @(posedge clock)  

begin   

  a = b + c;   

  b = c + a;   

  c <= a + b;  

end   


assign f = c;  


endmodule


海绵宝宝撒
浏览 696回答 3
3回答

慕森王

传统的Verilog智慧全都错了。使用阻塞分配给局部变量没有问题。但是,切勿将阻塞分配用于同步通信,因为这是不确定的。时钟总是块内的非阻塞分配将始终根据语义来推断触发器。时钟内的阻塞分配是否始终阻塞会触发触发器,这完全取决于其使用方式。如果可以在分配变量之前读取该变量,则将推断出一个触发器。否则,这就像一个临时变量,它将导致一些组合逻辑。
打开App,查看更多内容
随时随地看视频慕课网APP