文章目录
标识符
Verilog HDL 中的标识符(identifier )可以是任意一组字母 、数字 、$
符号和 _
(下划线)符号的组合,但标识符的第一个字符必须是字母或者下划线。另外,标识符是区分大小写的。
转义标识符(escaped identifier)可以在一条标识符中包含任何可打印字符。转义标识符以 \
(反斜线)符号开头,以空白结尾。
Verilog HDL 定义了一系列保留字,叫做关键词 ,它仅用于某些上下文中。注意只有小写的关键词才是保留字。例如,标识符 always
(这是个关键词)与标识符 ALWAYS
(非关键词)是不同的。
注释
在 Verilog HDL 中有两种形式的注释。
c
/* 第一种形式:可以扩展至
多行 */
// 第二张形式:在本行结束。
格式
Verilog HDL 区分大小写。也就是说大小写不同的标识符是不同的。此外, Verilog HDL 是自由格式的,即结构可以跨越多行编写,也可以在一行内编写。
例如
c
initial begin Top=3'b001; #2 Top=3'b011; end
和下面的指令一样:
c
initial
begin
Top = 3'b001;
#2 Top = 3'b011;
end
系统任务和函数
以 $
字符开始的标识符表示系统任务或系统函数。任务提供了一种封装行为的机制。这种机制可在设计的不同部分被调用。任务可以返回 0 个或多个值。函数除只能返回一个值以外与任务相同。此外,函数在 0 时刻执行,即不允许延迟,而任务可以带有延迟。
c
$display("Hi, you have reached LT today");
/* $display 系统任务在新的一行中显示。 */
$time
// 该系统任务返回当前的模拟时间
值集合
Verilog HDL 有下列四种基本的值:
- 0:逻辑 0 或"假"
- 1:逻辑 1 或"真"
- x:未知
- z:高阻
注意这四种值的解释都内置于语言中。如一个为 z 的值总是意味着高阻抗,一个为 0 的值通常是指逻辑 0。Verilog HDL中的常量是由以上这四类基本值组成的。
Verilog HDL 中有三类常量:
- 整型
- 实数型
- 字符串型
下划线符号 _
可以随意用在整数或实数中,它们就数量本身没有意义。它们能用来提高易读性;唯一的限制是下划线符号不能用作为首字符。
数据类型
Verilog HDL 有两大类数据类型。
- 线网类型。。net type 表示 Verilog 结构化元件间的物理连线。它的值由驱动元件的值决定,例如连续赋值或门的输出。如果没有驱动元件连接到线网,线网的缺省值为 z。
- 寄存器类型 。register type 表示一个抽象的数据存储单元,它只能在
always
语句和initial
语句中被赋值,并且它的值从一个赋值到另一个赋值被保存下来。
参数
参数是一个常量。参数经常用于定义时延和变量的宽度。使用参数说明的参数只被赋值一次。参数说明形式如下:
c
parameter param1 = const_expr1, param2 = const_expr2, ...,
paramN = const_exprN;
下面为具体实例:
c
parameter LINELENGTH = 132, ALL_X_S = 16'bx;
parameter BIT = 1, BYTE = 8, PI = 3.14;
parameter STROBE_DELAY = (BYTE + BIT) / 2;
parameter TQ_FILE = " /home/bhasker/TEST/add.tq"