一、程序结构
使用Verilog描述硬件的基本设计单元是模块(module)
模块的结构如下:
//模块声明
module<module_name>(port_name1,...port_namen);//端口定义也可以在模块声明类表中进行
//端口定义(端口是模块与外部模块信号传递的通道,分三类),定义同时需要声明数据类型
input<input_port_name>,...<other_inputs>...; //端口数据类型有两种:net(默认)和reg
output<output_port_name>,...<other_outputs>...;//不能将输入和双向端口指定为reg类型
inout<inout_port_name>,...<other_inouts>...; //输出端口可以被重新声明为reg类型
//数据类型说明
wire
reg
parameter
//逻辑功能定义(实现模块具体功能,主要有四种)
assign //分配语句实现逻辑定义
always //在always过程赋值
function
task //函数或任务调用
... //模块调用
endmodule //注意!!每条语句以分号结束,但endmodule语句(begin,end类似C语言{})后不加分号
二、描述方式(建模方式)
1.行为级描述
最高抽象级别的描述方式,按照设计的算法实现模块,而不关心模块的具体硬件实现,类似C语言编程,一般用于对设计进行仿真,可能并不能转换成具体物理实现。
逻辑行为的描述是通过行为描述语言来实现的,可使用下述过程语句结构描述行为功能:(1)inital语句,只执行一次(2)always语句,循环执行若干次
(注:1.init