词法记号17 Mar 2025 | 6 分钟阅读 Verilog 中的词法约定与 C 编程语言相似。Verilog 语言源文本文件是词法标记流。 一个词法标记可以由一个或多个字符组成,并且每个字符都属于且仅属于一个标记。 标记可以是关键字、注释、数字、空白字符或字符串。所有行都应以分号 (;) 结尾。
White Space空白字符可以包含制表符、空格、换行符和换页符。这些字符将被忽略,除非它们用于分隔其他标记。但是,字符串中的空格和制表符很重要。 注释有两种表示注释的方式,例如:
数字我们可以指定二进制、十进制、十六进制或八进制格式的常量数字。负数以 2 的补码形式表示。问号 (?) 字符是 Verilog 中 z 字符的替代形式,当用于数字时。下划线字符 (_) 在数字中的任何位置都合法,但它不能作为第一个字符。 1. 整数 Verilog HDL 允许将整数指定为:
语法 语法如下: 2. 实数
3. 有符号数和无符号数 Verilog 支持这两种类型的数字,但有一些限制。在 C 语言 中,我们没有 int 和 unint 类型来表示一个数字是有符号整数还是无符号整数。 任何没有负号前缀的数字都是正数。或者间接的方式是“无符号”。 可以通过在常量数字的大小前加上负号来指定负数,从而成为有符号数。Verilog 在内部以 2 的补码格式表示负数。可以添加可选的有符号说明符来进行有符号算术。 4. 负数 通过在数字大小前加上负号 (-) 来指定负数。在 base_format 和 number 之间放置负号是非法的。 标识符标识符是用于定义对象的名称,例如函数、模块或寄存器。标识符应以字母字符或下划线字符开头。 例如,A_Z 和 a_z。 标识符是字母、数字、下划线和 $ 字符的组合。它们最多可以长 1024 个字符。
1. 转义标识符 Verilog HDL 允许通过转义标识符来使用任何字符作为标识符。 转义标识符包含标识符中的任何可打印 ASCII 字符。
运算符运算符是用于设置条件或操作变量的特殊字符。通常使用一个、两个,有时是三个字符来对变量执行操作。 1. 算术运算符 这些运算符执行算术运算。+ 和 - 可以用作一元 (x) 或二元 (z-y) 运算符。 算术运算中包含的运算符有加法、减法、乘法、除法和取模。 2. 关系运算符 这些运算符比较两个操作数,并返回一个单比特结果,1 或 0。关系运算中包含的运算符有:
3. 按位运算符 按位运算符对两个操作数进行逐位比较。按位运算中包含的运算符有:
4. 逻辑运算符 逻辑运算符是按位运算符,仅用于单比特操作数。它们返回一个单比特值,0 或 1。它们可以处理整数或比特组、表达式,并将所有非零值视为 1。 逻辑运算符通常用于条件语句,因为它们可以与表达式一起使用。逻辑运算中包含的运算符有:
5. 约简运算符 约简运算符是按位运算符的一元形式,作用于操作数向量的所有比特。它们也返回一个单比特值。约简运算中包含的运算符有:
6. 移位运算符 移位运算符将第一个操作数按语法中指定的位数进行移位。 对于左移和右移,空位都用零填充(不使用符号扩展)。移位运算中包含的运算符有:
7. 连接运算符 连接运算符将两个或多个操作数组合成一个更大的向量。连接运算中包含的运算符是:
8. 重复运算符 重复运算符是创建项的多个副本。重复运算中使用的运算符是:
9. 条件运算符 条件运算符会综合成一个多路复用器。它与 C/C++ 中使用的相同,并根据条件评估两个表达式中的一个。条件运算中使用的运算符是:
操作数操作数是运算符对其进行操作或工作的表达式或值。所有表达式至少有一个操作数。 1. 字面量 字面量是 Verilog 表达式中使用的常量值操作数。Verilog 中常用的两个字面量是:
2. 导线、寄存器和参数 导线 (Wires)、寄存器 (Regs) 和参数 (Parameters) 是用作 Verilog 表达式中操作数的数据类型。位选择 "x[2]" 和部分选择 "x[4:2]" 位选择和部分选择用于使用方括号 "[ ]" 从导线、寄存器或参数向量中选择一个比特和多个比特。 3. 函数调用 在函数调用中,函数返回值直接在表达式中使用,而无需先将其分配给寄存器或导线。 它只是将函数调用作为一种操作数。了解函数调用返回值的比特宽度很有用。 下一主题ASIC 设计流程 |
我们请求您订阅我们的新闻通讯以获取最新更新。