1.1语言要素

一、空白符

包括空格符(\b)、制表符(\t)、换行符、换页符
目的:为了程序的易读性

二、注释符

单行注释‘//’
多行注释以‘/*’开头到‘*/’结束

三、标识符

用来命名信号名、模块名、参数名等,可以是字母、数字、$、‘_’(下划线)的组合,但必须以字母或下划线开头

四、转义标示符

以'\'符号开头,空白结尾

五、关键字

verilog规定无法被用户定义

六、数值

状态 含义
0 低电平,逻辑假
1 高电平,逻辑真
x或X 不确定
z或Z 高阻态

(1)整数及其表示方式

数制 基本符号
二进制 b或B
八进制 o或O
十进制 d或D
十六进制 h或H

正确表示
8‘b10001101//位宽为8的二进制数10001101
8’ha6//位宽为8位的十六进制数a6
5‘o35//5位8进制数35
4’b1x_01//4位二进制数1x01,下划线提高可读性

(2)实数及其表示

十进制表示法,小数点两边必须都有数字
科学计数法

1.2数据类型

物理数据类型:连线型、寄存器型和存储器型
信号强度表示数字电路中不同强度的驱动源,用来解决不同驱动强度下的赋值冲突

一、连线型

 二、寄存器型(reg)

reg型是数据存储单元的抽象类型,其对应的硬件电路元件具有状态保持的作用。
reg型变量常用于行为级描述,有过程赋值语句对其进行赋值。
reg a;        //定义一个一位名为a的reg变量
reg[3:0] b;        //定义一个4位名为b的reg变量
reg[8:1] c,d,e;        //定义三个名为c,d,e的8位reg变量
reg变量一般是无符号数,若将一个负数赋值给reg变量,则自动转换成二进制的补码

三、连线型数据类型的声明

<net_declaration><drive strength><range><delay>[list_of_variables];
net_declaration包括 wire、tri、 trio、 tril 、 wand、triand、 trior、wor中的任意一种。
range:用来指定数据为标量或矢量。若该项默认,表示数据类型为1位的标量,超过1位则为矢量形式。
delay:指定仿真延迟时问。
list_of_variables: 变量名称,一次可定义多个名称,之问用逗号分开。
drive_strength: 表示连线变量的驱动强度。

四、寄存器型数据类型的声明

reg<range> <list_of_register_variables>
range为可选项,它指定了reg型变量的位宽,缺省时为1位。
<list_of_register_variables>为变量名称列表,一次可以定义多个名称,之间用逗号分开。

五、存储器型

存储器型变量可以描述民RAM型、ROM型存储器以及reg文件。
存储器变量的一般声明格式为:
reg <range1><name_of_register><range2>;
range1和range2都是可选项,缺省都为1。
<srange1>:表示存储器当中寄存器的位宽,格式为[msb:lsb]。
<range2>:表示寄存器的个数,格式为[msb:lsb],即有msb-ls6+1个。
<name_of_register>为变量名称列表,一次可以定义多个名称,之间用逗号分开。

 六、抽象数据类型