在Verilog中分配值:assign,<=和=之间的差异

dri*_*ngx 9 verilog assign

我刚刚开始学习Verilog,我从不同的来源看到了这三行.我对这三者之间的区别感到困惑:

  1. c <= a&b;
  2. 分配c = ~a;
  3. c = 1'b0;

这些线似乎为c赋值,但有什么区别?谢谢.

chr*_*ris 11

1)<=无阻塞,并在时钟的每个正边沿执行.这些是并行评估的,所以不保证订单.这方面的一个例子是登记册.

2)assign =在总是声明之外连续分配到电线.当RHS发生变化时,LHS的值会更新.

3)=阻塞分配,内部始终语句强制执行顺序.

  • 我认为值得注意的是非阻塞(`<=`)和阻塞(`=`)必须在`initial`或`always`块中使用. (5认同)