1 阻塞赋值
是顺序执行的,即上面一条语句执行完成之后,在执行下一行语句。
2 非阻塞赋值
是并行执行的,即第一行语句执行的时候,并不阻止下面语句的执行。
3 例程
初始化m=1,n=2,p=3;分别执行以下语句
(1)阻塞赋值
begin
m=n;
n=p;
p=m;
end
(2)非阻塞赋值
begin
m<=n;
n<=p;
p<=m;
end
(3)结果分析
第一类输出结果为m=2;n=3;p=2;(在给p赋值时m=2已经生效)
第二类输出结果为m=2;n=3;p=1;(在begin-end过程中,m=2一直无效而是在整体执行完后才生效)
(4)使用方法
在描述组合逻辑的always块中用阻塞赋值=,综合成组合逻辑的电路结构;
这种电路结构只与输入电平的变化有关系。
在描述时序逻辑的always块中用非阻塞赋值<=,综合成时序逻辑的电路结构;
这种电路结构往往与触发沿有关系,只有在触发沿时才可能发生赋值的变化。
注意:在同一个always块中不要即用非阻塞赋值又用阻塞赋值
不允许在多个always块中对同一个变量进行赋值!