📜  词汇标记

📅  最后修改于: 2021-01-11 14:32:13             🧑  作者: Mango

词汇代币

Verilog中的词汇约定类似于C编程语言。 Verilog语言源文本文件是词汇标记流。

词汇标记可以由一个或多个字符,并且每个单个字符都在一个标记中。

标记可以是关键字,注释,数字,空格或字符串。所有行应以分号(;)终止。

  • Verilog HDL是区分大小写的语言。
  • 并且所有关键字均小写。

空白空间

空格可以包含制表符,空格,换行符和换页符的字符。这些字符将被忽略,除非它们用于分隔其他标记。但是,空格和制表符在字符串很重要。

评论

有两种类型来表示注释,例如:

  • 单行注释以令牌//开头,并以回车结束。例如,///这是单行语法。
  • 多行注释以标记/ *开头,以标记* /结束,例如/ *这是多行语法* /

号码

我们可以以二进制,十进制,十六进制或八进制格式指定常数。负数以2的补码形式表示。当用于数字时,问号(?)字符可替代z字符的Verilog。下划线字符(_)在数字中的任何位置都是合法的,但会被忽略为第一个字符。

1.整数

Verilog HDL允许将整数指定为:

  • 大小或大小不限的数字(大小不限为32位)。
  • 以十进制,十六进制,二进制或八进制为基数。
  • 基数和十六进制数字(a,b,c,d)不区分大小写。
  • 基数,大小和值之间允许有空格。

句法

语法为:

'

2.实数

  • Verilog支持实常数和变量。
  • Verilog通过舍入将实数转换为整数。
  • 实数不能包含“ A”和“ X”。
  • 实数可以十进制或科学计数法指定。
  • <值>。<值>
  • <尾数> E <指数>
  • 实数在分配给整数时会四舍五入为最接近的整数。

3.有符号和无符号数字

Verilog支持两种数字类型,但有一定的限制。在C语言中,我们没有int和unint类型来说明数字是带符号整数还是无符号整数。

没有负号前缀的任何数字均为正。或间接方式将是“未签名”。

负数可以通过在常量的大小前面加上减号来指定,从而成为带符号的数。 Verilog内部以2的补码格式表示负数。可以添加可选的带符号说明符以进行带符号运算。

4.负数

通过在数字的大小之前放置减号(-)来指定负数。在base_format和number之间使用减号是非法的。

身份标识

标识符是用于定义对象的名称,例如函数,模块或寄存器。标识符应以字母字符或下划线字符开头。

例如,A_Z和a_z。

标识符是字母,数字,下划线和$字符。最长为1024个字符。

  • 标识符必须以字母字符或下划线字符( az A-Z_ )开头。
  • 标识符可以包含字母字符,数字字符,下划线和美元符号( az AZ 0-9 _ $ )。
  • 标识符的最大长度为1024个字符。

1.转义的标识符

Verilog HDL通过转义标识符允许在标识符中使用任何字符。

转义的标识符包括标识符中的任何可打印ASCII字符。

  • 十进制值33到126,或十六进制的21到7E。
  • 转义的标识符以反斜杠(\)开头。反斜杠转义整个标识符。
  • 转义的标识符以空格字符(例如逗号,括号和分号)终止,除非在转义标识符之前加上空格,否则转义的标识符将成为转义标识符的一部分。
  • 用空格终止转义的标识符。否则,应将标识符之后的字符视为标识符的一部分。

经营者

运算符是用于放置条件或操作变量的特殊字符。有一个,两个,有时三个字符用于对变量执行操作。

1.算术运算符

这些运算符执行算术运算。 +和-用作一元(x)或二进制(zy)运算符。

算术运算中包括的运算运算符为加,减,乘,除和模。

2.关系运算符

这些运算符将两个操作数进行比较,并以1或0的位返回结果。关系运算中包括的运算符为:

  • ==(等于)
  • !=(不等于)
  • (比…更棒)
  • > =(大于或等于)
  • <(小于)
  • <=(小于或等于)

3.按位运算符

按位运算符在两个操作数之间进行逐位比较。按位运算中包括的运算符为:

  • &(按位与)
  • | (按位或)
  • 〜(按位非)
  • ^(按位XOR)
  • 〜^或^〜(按位XNOR)

4.逻辑运算符

逻辑运算符是按位运算符,仅用于单个位操作数。它们返回一个0或1的单个位值。它们可以处理整数或一组位,表达式并将所有非零值都视为1。

逻辑运算符通常用于条件语句中,因为它们可用于表达式。逻辑运算中包括的运算符为:

  • ! (逻辑非)
  • &&(逻辑与)
  • || (逻辑或)

5.归约运算符

归约运算符是按位运算运算符的一元形式,并且对操作数向量的所有位进行运算。这些也返回一个单位值。归约运算中包括的运算符为:

  • &(减少AND)
  • | (减少或)
  • 〜&(还原NAND)
  • 〜| (减少NOR)
  • ^(减XOR)
  • 〜^或^〜(归一化XNOR)

6.移位运算符

移位运算符将第一个操作数按语法中第二个操作数指定的位数进行移位。

空缺位置在两个方向(左移和右移)中均填充有零(没有使用符号扩展名)。 Shift操作中包括的运算符为:

  • <<(向左移动)
  • >>(右移)

7.串联运算符

串联运算符组合两个或多个操作数以形成较大的向量。串联操作中包括的运算符为:

  • {}(串联)

8.复制运算符

复制运算符正在复制一个项目。复制操作中使用的运算符为:

  • {n {item}}(n项的重复复制)

9.条件运算符

有条件的运算符合成一个多路复用器。它与C / C++中使用的类型相同,并根据条件评估两个表达式之一。有条件操作中使用的运算符为:

  • (健康)状况) ?

操作数

操作数运算符在其上进行操作的表达式或值。所有表达式都有至少一个操作数。

1.字面量

字面量是在Verilog表达式中使用的恒定值操作数。两种常用的Verilog字面量是:

  • String :字面量字符串操作数是用双引号(“”)括起来的一维字符数组。
  • 数值:操作数的常数以二进制,八进制,十进制或十六进制数指定。

2.接线,Regs和参数

连线,regs和参数是在Verilog表达式中用作操作数的数据类型。位选择“ x [2]”和零件选择“ x [4:2]”

位选择部分选择分别用于使用方括号“ []”从导线,寄存器或参数向量中选择一位和多位。

3.函数调用

在函数调用,函数的返回值被直接用于表达而无需首先将其分配给寄存器或导线。

它只是将函数调用作为操作数的类型之一。了解函数调用的返回值的位宽很有用。