Verilog HDL 学习(一)

Verilog HDL程序的基本结构

Verilog HDL程序是由模块构成的,一个模块可以包括整个设计模型或者设计模型的一部分。从结构上看,每个模块主要包含模块声明端口定义信号类型说明逻辑功能描述。其中,只有moudle模块名endmodule必须出现,其他部分都是可选的。

模块基本结构


module



input

output

inout



wire

reg

parameter




assign

(initialalways)

.........


endmodule


模块声明

模块声明包括模块名端口列表

module 模块名(端口1, 端口2, 端口3, ....);

端口定义

端口是模块与外界交互的接口。端口的位宽最好定义在端口定义中。

input[3:0]  端口名1, 端口名2, ..., 端口名N;                  //输入端口
output[3:0] 端口名1, 端口名2, ..., 端口名N;                  //输出端口
inout[7:0]  端口名1, 端口名2, ..., 端口名N;                  //输入输出端口

信号类型说明

信号可以分为端口信号和内部信号,出现在端口列表中的信号是端口信号,其他的信号为内部信号。信号的类型分寄存器类型(reg)连线类型(wire)。如果信号的数据类型没有定义,则综合器将其默认为wire型。不能将inputinout类型的端口声明为reg信号类型。reg信号用于保存数值,wire信号用于连接信号。

wire 端口名1, 端口名2, ..., 端口名N;
reg 端口名1, 端口名2, ..., 端口名N;  

逻辑功能描述

模块中最核心的部分是逻辑功能描述。最基本的描述方式有3种:alwaysassign创建模块实例
一个Verilog HDL模块中允许使用一种或多种方法描述逻辑功能。此外,还可以调用函数(function)和任务(task)来描述逻辑功能。

你可能感兴趣的:(Verilog HDL 学习(一))