3

我看到了以下形式的一些陈述。#`DEL在这里是什么意思?我无法轻易找到它的含义,因为它包含一个特殊字符。

cmd <= #`DEL 32'b0
4

2 回答 2

5

有问题的代码将分配延迟了一些。#`DEL(由于反引号不能使用内联编码)有 3 个部分。首先,# 表示这是一个延迟语句。接下来,反引号(~ 下方的字符)表示 Verilog 中的预处理器定义;在您正在编译的代码中的某处,您将拥有以下几行内容:

`define DEL 1ns

其中 1ns 可能是任何时间值,这将是延迟。在这里我们应该清楚,在 DEL 之前应该有一个反引号(在 ~ 下),而 32'b0 使用单引号。

于 2013-11-05T20:40:41.400 回答
4

这是一个延迟声明。

将右侧的值分配延迟到左侧定义的数量,在这种情况下延迟 cmd 变为零。

可以以任何时间或实时格式指定延迟,#1如 ...

#1ns, #1us, #1msSystemVerilog 中提供了更多功能。

一个更典型的情况是右手边是非常数的。

assign a = #1ns b;

这里 a 将滞后 b 1 ns。

可以通过搜索“delay_value”在语言参考手册LRM中找到对此的参考。

于 2013-11-05T16:30:45.343 回答