首页 > 解决方案 > 阻塞和非阻塞语句的verilog内部延迟

问题描述

在 Verilog 中,

#1 x = y; 
#1; x = y;

是相同的?

还,

#1 x <= y; 
#1; x <= y; 

是相同的?

我找到了一个相关链接#delay 如何为verilog 非阻塞语句工作?我的问题会更清楚地解决困惑。

标签: verilog

解决方案


#1 x = y;

表示等待一个滴答声,然后将 y 分配给 x

#1; x = y;

表示等待一个滴答声然后什么也不做,然后将 y 分配给 x。两个语句的行为相同。


#1 x <= y;

意味着等待一个滴答声,然后在活动区域​​中采样 y,然后在NBA区域中分配 x

#1; x <= y;

意味着等待一个滴答然后什么都不做,然后在活动区域​​中采样 y 然后在NBA区域中分配 x。同样,这两个语句的行为相同。


然而...

x = #1 y; 

表示样本 y 然后等待一个,然后在一个滴答后分配给活动区域中的 x;在延迟结束之前不要执行以下行

x <= #1 y; 

while 表示样本 y 然后立即执行以下行,但将分配给NBA地区的 x 安排在未来一个刻度。这些语句的行为不同,巧妙地说明了为什么<=称为非阻塞赋值的原因。

像这样在赋值运算符之后放置一个延迟称为内部赋值延迟


推荐阅读