个人笔记
阻塞赋值
阻塞赋值的赋值号为“=”,只与输入电平的变化有关系,它的操作可以认为是只有一个步骤的操作,即计算赋值号右边的语句并更新赋值号左边的语句,不允许其他语句干扰,直到现行的赋值完成才进行下一条赋值(一句一句赋值)
比如:a=1,b=2,c=3
begin
a=b+1;
b=a+2;
c=a-1;
end
最后结果a=3 b=5 c=2
非阻塞赋值
非阻塞赋值的赋值号为“<=”,对应的电路结构与触发沿有关,只有在触发沿的时刻才能进行非阻塞赋值,它的操作可以看成两个步骤:在赋值开始时刻计算赋值号右边语句,在赋值结束时,更新赋值左边语句。允许其他的Verilog语句同时进行操作(一起先完成赋值,最后一起计算结果,是并行执行),它只能用于对寄存器类型变量进行赋值,因此只能用于“initial”“always”块中,不允许用于连续赋值“assign”中
比如 :a=1,b=2,c=3
begin
a<=b+1;
b<=a+2;
c<=a-1;
end
结果 a=3 b=3 c=0