图1关于阻塞(蓝)和非阻塞(红)赋值的代码
图二testbench模拟输入和输出,并例化
如图1所示蓝,“=”表示阻塞赋值,即将等号右侧的值确定后再赋给等号左侧。
而图1所示红,“<=”则表示在always执行前(此处为上升沿到来前)已经确定好“<=”右侧的值,而当上升沿到来时,就立刻将值赋给左侧。
如时序图所示:
-阻塞赋值: 当上升沿到来时,a=0,b=1。然后将其赋给m1,当m1得到值以后又立刻赋值给y1
- 非阻塞赋值:当上升沿到来之前,a=0,b=1,m2=0。在上升沿到来时,将提前计算好的a+b=1、m2=0分别赋给m2和y2。而非在m2改变后赋予改变后的量。