记录Verilog的一些关键点
Verilog HDL模块结构
每个Verilog HDL模块都包括4个主要部分:
- 模块声明
- 端口定义
- 数据类型声明
- 逻辑功能描述
如图:
基本的代码结构:
//模块声明//端口声明
module模块名(输入/输出端口列表);
input输入端口列表;
output输出端口列表;
inout双向端口列表;
//数据类型声明,任务或函数声明
wire [n-1:0]数据名;
reg [n-1:0]数据名;
task任务名;
端口及数据类型声明;
其他语句;
endtask
function函数名;
端口声明;
局部变量定义;
其他语句;
endfunction
//逻辑功能描述
assign结果-表达式;
//数据流描述方式
always@(敏感信号列表)
//行为描述方式
begin
//过程赋值语句
/ /if-else语句、case语句//for循环语句
//调用任务、函数
end
//元件例化结构描述方式
门元件关键字例化门元件名(端口列表);
调用模块名例化模块名(端口列表);
endmodule
Verilog HDL基本语法
语言要素
- 注释
// 单行注释
/*多行
注释*/
- 关键字,所有关键字都是小写的
- 标识符,任意一组字母、数字、“ ”(下画线)和“$”(美元符号)的组合,但标识符的第一个字符必须是字母(A ~ Z,a~ z)或是下画线“ ”,不能以数字或美元符号“$”开始。
常量
Verilog HDL中的常量主要有3种类型:
- 整数
- 实数
- 字符串
其中,整数型常量是可以综合的,而实数型和字符串型常量是不可综合的。
Verilog中四种逻辑状态:
逻辑状态 | 含义 |
---|---|
0 | 低电平、逻辑0、“非” |
1 | 高电平、逻辑1、“真” |
z | 高阻态 |
x | 不确定或未知的逻辑状态 |
Verilog HDL中的数据都是在上述4类逻辑状态中取值,其中z和x都不区分大小写,也就是说,值10xz与值10XZ是等同的,表示同一个数据。
- 整数
符 号 ( + / − ) + 位 宽 + ′ + 进 制 ( b 、 o 、 d 、 h ) + 数 字 符号(+/-)+位宽+'+进制(b、o、d、h)+数字 符