阻塞赋值与非阻塞赋值
- 阻塞赋值的操作可以认为是只有一个步骤的操作,即计算赋值号右边的语句并更新赋值号左边的语句,此时不允许有来自任何其他 Verilog 语句的干扰,直到现行的赋值完成时刻,即把当前赋值号右边的值赋值给左边的时刻完成后,它才允许下一条的赋值语句的执行。
- 非阻塞操作开始时计算非阻塞赋值符的赋值号右边的语句,赋值操作结束时刻才更新赋值号左边的语句,可以认为是两个步骤(赋值开始时刻和结束时刻)来完成非阻塞赋值。
不理解直接先记忆
1) 时序电路建模时,用非阻塞赋值;
2) 锁存器电路建模时,用非阻塞赋值;
3) 用 always 块建立组合逻辑模型时,用阻塞赋值;
4) 在同一个 always 块中建立时序和组合逻辑电路时,用非阻塞赋值;
5) 在同一个 always 块中不要既用非阻塞赋值又用阻塞赋值;
6) 不要在一个以上的 always 块中为同一个变量赋值。