跳转到主要内容
瑞苏盈科专栏
我与瑞苏盈科板卡的开发故事

阻塞赋值

深入理解阻塞和非阻塞赋值的区别

judy /

阻塞与非阻塞赋值的语言结构是Verilog语言中最难理解的概念之一。

有这样的两个要点:
(1)在描述组合逻辑的always块中用阻塞赋值,则综合成组合逻辑的电路结构;
**(2)在描述时序逻辑的always块中用非阻塞赋值,则综合成时序逻辑的电路结构。

这样做的原因是:**

这是因为要使综合前仿真和综合后仿真一致的缘故。

为了更好地理解上述要点,我们需要对Verilog语言中的阻塞赋值和非阻塞赋值的功能和执行时间上的差别有深入的理解。我们定义下面的两个关键字:
RHS——方程式右手方向的表达式或变量可分别缩写成 RHS表达式或RHS变量;
LHS ——方程式左手方向的表达式或变量可分别缩写成LHS 表达式或LHS变量。

IEEE Verilog标准定义了有些语句有确定的执行时间,有些语句没有确定的执行时间。若有两条或两条以上的语句准备在同一时间执行,但由于语句的排列顺序不同,却产生了不同的输出结果。这就是造成Verilog模块冒险和竞争的原因。为了避免产生竞争,理解阻塞和非阻塞赋值在执行时间上的差别是至关重要的。

<strong>1、阻塞赋值</strong>