Verilog HDL和C语言类似,都定义了一系列保留字,称为关键字(或关键词)。这些保留字是识别语法的关键。表 2.1 列出了Verilog HDL中的所有关键字。
表 2.1 Verilog HDL中的所有关键字
需要说明的是,Verilog HDL是建立在硬件电路基础上的硬件描述语言,有些语法结构是不能与实际硬件电路对应起来的,比如for循环是不能映射成实际硬件电路的。因此,Verilog HDL硬件描述语言分为可综合和不可综合语言。
所谓可综合,是指所编写的Verilog代码能够被综合器转化为相应的电路结构。因此常用可综合语句来描述数字硬件电路。
所谓不可综合,是指所编写的Verilog代码无法综合生成实际的电路。因此,可以用来仿真、验证所描述的数字硬件电路。
尽管表 2.1 列出了那么多关键字,实际经常使用的并不多,只需要掌握可以被综合器综合的那部分关键字就可以了。常用的可综合关键字如表 2.2 所示。
表 2.2 Verilog HDL常用关键字
注意只有小写的关键字才是保留字。例如,标识符always(关键词)与标识符ALWAYS(非关键词)是不同的。
标识符(identifier)用于定义模块名、端口名和信号名等。Verilog HDL的标识符可以是任意一组字母、数字、$和_(下划线)符号的组合,但标识符的第一个字符必须是字母或者下划线。另外,标识符是区分大小写的。以下是标识符的几个例子:
cnt
CNT
sys_clk
MUX8_1
不建议大小写混合使用,普通内部信号建议全部小写,参数定义建议大写,另外信号命名最好体现信号的含义。以下是相关规范建议的一些书写要求:
①用有意义的有效的名字如sum、cpu_addr等。
②用下划线区分词语组合,如cpu_addr。
③采用一些前缀或后缀,比如:时钟采用clk前缀(如clk_50m、clk_cpu);低电平采用_n后缀(如enable_n)。
④统一缩写,如全局复位信号rst。
⑤同一信号在不同层次保持一致性,如同一个时钟信号必须在各模块保持一致。
⑥自定义的标识符不能与保留字(关键词)同名。
⑦参数统一采用大写,如定义参数使用SIZE。