模块的描述方式又称建模方式,Verilog既是一门行为化又是一门结构化的HDL语言。根据设计需要,每个模块分为四种抽象级别来进行描述。模块在外部环境中表现是相等的,模块按照以下四类抽象类别进行描述。
行为级或算法级描述方式(行为级建模)
这是Verilog HDL最高抽象级别的描述方式。一个模块可以按照设计算法来实现,而不用关心硬件实现的细节。 行为描述是通过行为语句来实现的,行为功能可使用下述过程语句结构描述。
- initial 语句:此语句只执行一次
- always语句:此语句循环执行
只有寄存器类型数据能够在这两种语句中被赋值。寄存器类型数据在被赋新值前保持原值不变。所有的initial语句和always语句在零时刻并发执行。
下面是一个4bit的二进制行波计数器(带进位)为例来说明行为级的描述方式。
该计数器由4个T触发器级联而成的,每一级T触发器的输出作为下一级T触发器的时钟输入。下例是用行为级描述方式来实现计数器的一个例子。
module cnt_4bit (q,clear,clock);
output [3:0] q;
input clear,clock;
reg [3:0] q;
always @(posedge clear or negedge clock)
begin
if (clear)
q=4'd0;
else
q=(q+1) % 16;
end
endmodule
模块cnt_4bit的输出端口q是一个4bit的位矢量,代表4根输出端口线q[3]、q[2]、q[1]、q[0]。由于输出端口要在always语句中被赋值,所以它被定义为reg型(寄存器型)数据。clear和clock是两个输入端口。Always语句中包含一个或事件控制(紧跟在字符@后面的表达式),以及相关联的顺序过程(begin-end对)。此或事件控制的作用是当输入端口clear、clock上发生事件,即clear、cloc