verilog - 阻塞和非阻塞语句的verilog内部延迟
问题描述
在 Verilog 中,
#1 x = y;
#1; x = y;
是相同的?
还,
#1 x <= y;
#1; x <= y;
是相同的?
我找到了一个相关链接#delay 如何为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 安排在未来一个刻度。这些语句的行为不同,巧妙地说明了为什么<=
称为非阻塞赋值的原因。
像这样在赋值运算符之后放置一个延迟称为内部赋值延迟。
推荐阅读
- python - 分配给函数的整数 Input() 变量
- python - 为什么这种格式无效?
- wpf - MenuItems 在不同系统上的图标大小变化
- c++ - 密码管理器每次都会增加密码大小
- python - 为什么我不能在函数内部使用 vars() 来处理函数外部的变量?
- python - 使用嵌套数组打印嵌套 OrderedDict 中键和值的所有路径
- linux - ASP Net Core Linux ERR_CONNECTION_REFUSED
- javascript - MathJax 未正确显示动态添加(使用 js)矩阵
- javascript - 如何在 Vue CLI 组件中使用 Multi External CDN JavaScript 文件
- laravel - Laravel Eloquent 查询返回非对象