**提示:**永远都不要将 Verilog 的关键字用作自定义名称,即使大小写不同也不要用(尽管这是合法的,但容易出错)。
## 标识符
标识符用于为对象(例如寄存器、函数或模块等)提供名称,以便可以从代码中的其他位置引用它。
* 标识符必须以字母或下划线 ( az AZ \_ )开头
* 标识符可以包含字母、数字、下划线和美元符号 ( az AZ 0-9 \_ $ )
* 标识符最长可达 1024 个字符。
这些是合法的标识符:
* data\_input mu
* clk\_input my$clk
* i386 A
## 转义字符(**Escaped Identifiers**)
Verilog 语言允许通过转义字符在标识符中使用任何字符。转义字符提供了一种在标识符中包含任何可打印 ASCII 字符的方法(十进制值 33 到 126,或十六进制的 21 到 7E)。
* 转义标识符以反斜杠 (back slash,**\**) 开头
* 转义标识符以空白符终止(逗号、括号和分号等字符成为转义标识符的一部分,除非前面有空格)
* 要用空白符终止转义字符,否则标识符后面的字符将被视为其中的一部分
Verilog 不允许标识符以数字开头。所以如果您真的想使用以数字开头的标识符,请使用转义字符,如下所示。
//使用转义字符的字符串后必须有空格
module \1dff (
q, // Q output
\q~ , // Q_out output,注意空格
d, // D input
cl$k, // CLOCK input
\reset* // Reset input,注意空格
);
input d, cl$k, \reset* ;
output q, \q~ ;
endmodule
## Verilog 中的数字
您可以使用十进制、十六进制、八进制或二进制格式的常数。负数将以 2 的补码形式表示。问号 (**?**) 在数字中使用时与 **z** 的作用是等效的。
下划线 ( **\_**) 在数字中的任何位置都是合法的(但作为第一个字符时会被忽略),其仅用来分隔