Verilog的基本元素
既然Verilog作为硬件描述语言,那它用什么基本元素去描述硬件呢?如下:
- 模块(Module)——verilog的工程由模块组成, 一个电路设计可由多个模块组合而成,因此一个模块的设计只是一个系统设计中的某个层次设计,模块设计可采用多种建模方式。
- 逻辑门(& | ^ + – * / ==)—— 描述数字电路的组合逻辑电路
- 寄存器(reg)——描述数字电路的时序电路
- 线(wire)——用于连接逻辑门的寄存器
可以看到verilog的基本元素如此简单。
Verilog 基础语法
格式
- Verilog 区分大小写。
- 可换行编写。每个语句必须以分号为结束符。空白符(换行、制表、空格)都在编译阶段可忽略。
注释
Verilog 中有 2 种注释方式:
- 用 // 进行单行注释
- 用 /* 与 */ 进行跨行注释.
标识符与关键字
- 标识符(identifier)可以是任意一组字母、数字、$ 符号和 _(下划线)符号的合,但标识符的第一个字符必须是字母或者下划线,不能以数字或者美元符开始。
- 标识符是区分大小写的。
- 关键字是 Verilog 中预留的用于定义语言结构的特殊标识符。Verilog 中关键字全部为小写。
以下是标识符的几个例子:
Count
COUNT //与Count 不同。
R56_68
FIVE$
有了上面一些基础,本节重点讲下模块。
Verilog 的基本单元——模块(module)
先看一个简单的加法器模块
module addr (a, b, cin, count, sum);
input [2:0] a;
input [2:0] b;
input cin;
output count;
output [2:0] sum;
assign {count,sum} = a +b + cin;
endmodule
该例描述一个3位加法器,从例子可看出整个模块是以module 开始, endmodule 结束。
这里不改开讲了,后面将会详细介绍模块。
Verilog的关键字
Verilog所有关键字
常用关键字
可综合的 verilog 语法子集
常用的 RTL 语法结构如下:
- 模块声明: module…endmodule。
- 端口声明: input,output,inout(inout 的用法比较特殊, 需要注意) 。
- 信号类型:wire,reg,tri 等,integer 常用语 for 语句中(reg,wire是最常用的,一般 tri 和 integer 用在测试脚本里)。
- 参数定义:parameter,define。
- 运算操作符:各种逻辑操作符、移位操作符、算术操作符大多时可综合的(注:===与!==是不可综合的)。
- 比较判断:if…else,case(casex,casez)…default…endcase。
- 连续赋值:assign,问号表达式(?:)。
- always 模块:(敏感表可以为电平、沿信号 posedge/negedge;通常和@连用)。
- begin…end(通俗的说,它就是 C 语言里的 “{ }”)。
- 任务定义:task…endtask。
- 循环语句:for(不同的工具可能有差异)。
- 赋值符号: = 和 <=。
没有回复内容