第14章 深入理解阻塞和非阻塞赋值的不同
1.用带电平敏感列表触发条件的always块表示组合逻辑时,应该用哪一种赋值?
答:阻塞赋值
2.用带时钟沿触发条件的always块表示组合逻辑时,应该用哪一种赋值?
答:非阻塞赋值。
3.为什么不能在多个always块中为同一变量赋值?
答:多个always块中为同一变量赋值可能会导致竞争冒险即使使用非阻塞赋值也可能产生竞争冒险。
4.为什么不能用
d
i
s
p
l
a
y
系
统
任
务
来
显
示
用
非
阻
塞
赋
值
的
变
量
值
?
答
:
因
为
非
阻
塞
赋
值
语
句
的
赋
值
在
所
有
的
display系统任务来显示用非阻塞赋值的变量值? 答:因为非阻塞赋值语句的赋值在所有的
display系统任务来显示用非阻塞赋值的变量值?答:因为非阻塞赋值语句的赋值在所有的display命令执行以后才更新数据。
5.
s
t
r
o
b
e
和
strobe和
strobe和display这两个显示用系统任务有什么不同?各用于什么场合?
答:
d
i
s
p
l
a
y
命
令
的
执
行
是
安
排
在
活
动
时
间
队
列
中
,
但
排
在
非
阻
塞
赋
值
数
据
更
新
事
件
之
前
;
display命令的执行是安排在活动时间队列中,但排在非阻塞赋值数据更新事件之前;
display命令的执行是安排在活动时间队列中,但排在非阻塞赋值数据更新事件之前;strobe命令的执行在排在非阻塞赋值数据更新事件之后。
d
i
s
p
l
a
y
适
合
用
来
显
示
阻
塞
语
句
的
赋
值
,
display适合用来显示阻塞语句的赋值,
display适合用来显示阻塞语句的赋值,strobe适合用来显示非阻塞语句的赋值。
6.仿真器在处理阻塞和非阻塞赋值操作队列过程中有什么不同?
答:阻塞赋值是由动态事件队列调度的,而非阻塞赋值不是由动态事件队列调度的。
7.为什么可综合Verilog模块的设计中,必须注意并遵守本章的8条原则?
答:因为遵循本章的8条原则有助于正确的编写可综合硬件,并且可以消除90%-100%在仿真时可能产生的竞争冒险现象。