(12)非阻塞赋值与阻塞赋值区别(以简单例子说明)
二者定义
在夏语闻老师《verilog数字系统设计教程》中对二者给出如下定义:
非阻塞赋值(b<=a):所赋的变量值不能立刻为下面语句所用,块结束才能完成赋值操作,且所赋变量值是上一次赋值得到的
阻塞赋值(b=a):赋值语句执行完后块才能结束,b的值在赋值语句执行完后立刻改变
一般在时序逻辑中使用非阻塞赋值<=,而在组合逻辑中使用阻塞赋值=
简单例子说明
非阻塞赋值
波形仿真:
可以看到,在第一个上升沿时,虽然y的值立刻被赋值为a+b,但新的y的值并不能马上参与到x的赋值中,x所赋值的y+a中的y依然是前一个时刻的y的值,直到第二个上升沿x的赋值中才为新的y值。
这也正好印证了上面所说,非阻塞赋值的变量不能马上为下面所用!
阻塞赋值
tb同上
波形仿真:
这个现象就非常明显了,当上升沿到来是,x、y的值立刻发生变化,且是新变化的y值参与到x的赋值中