IT技术之家

首页 > 硬件开发

硬件开发

阻塞赋值和非阻塞赋值的区别_Wxz2021

发布时间:2023-12-10 02:04:29 硬件开发 84次 标签:fpga开发 开发语言
阻塞赋值和非阻塞赋值...

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=2;(在begin-end过程中,m=2一直无效而是在整体执行完后才生效)

(4)使用方法

? ? ? ? 在描述组合逻辑的always块中用阻塞赋值=,综合成组合逻辑的电路结构;

????????????????这种电路结构只与输入电平的变化有关系。

? ? ? ? 在描述时序逻辑的always块中用非阻塞赋值<=,综合成时序逻辑的电路结构;

? ? ? ? ? ? ? ? 这种电路结构往往与触发沿有关系,只有在触发沿时才可能发生赋值的变化。

注意:在同一个always块中不要即用非阻塞赋值又用阻塞赋值

? ? ? ? 不允许在多个always块中对同一个变量进行赋值!