Verilog——阻塞非阻塞用法分析

阻塞赋值和非阻塞赋值总是容易把人绕晕,已经使用Verilog编程一段时间了,现在终于感觉清楚了一点阻塞和非阻塞赋值的具体规则:

  1. always块中的被赋值变量必须为reg型;
  2. alwyas@(posedge clk)类似的语句用来描述时序逻辑,赋值使用非阻塞赋值 “<=”;
  3. always @(*)语句用来描述复杂的组合逻辑电路,赋值使用阻塞赋值 “=”;
  4. assign语句只能描述组合逻辑,被赋值变量为wire型,赋值使用阻塞赋值 “=”;

阻塞赋值、非阻塞赋值名称的含义:

  • 阻塞赋值是说,多行赋值语句必须按顺序执行,上一行语句执行完才能执行下一行语句,“阻塞”着向下执行。
  • 非阻塞赋值是说,多行赋值语句满足赋值条件时同时执行,没有“阻塞”

猜你喜欢

转载自blog.csdn.net/family5love/article/details/109765334
今日推荐