9.9 Structured procedures
结构化语句
Verilog HDL中的所有过程语句都在以下四种语句之一中指定:
—initial结构
—always结构
—task
—function
initial和always结构在仿真开始时启用。initial结构只执行一次,当语句执行完成后,活动就停止了。相比之下,always结构重复执行。只有当仿真停止时,它的活动才停止。在initial结构和always结构之间不应有隐含的顺序。initial结构不需要在always结构之前调度和执行。在一个模块中,initial结构和always结构的数量没有限制。任务和函数是从其他过程中的一个或多个位置启用的过程。任务和功能将在第10条中描述。
9.9.1 Initial construct/initial结构
initial构造的语法见语法9-15。
例如:
下面的示例演示了在仿真开始时如何使用initial构造来初始化变量。
initial begin
areg = 0; // initialize a reg
for (index = 0; index < size; index = index + 1)
memory[index] = 0; //initialize memory word
end
initial结构的另外一个典型用法是波形描述规范,波形描述只执行一次,为仿真电路的主要部分提供激励。
initial begin
inputs = 'b000000; // initialize at time zero
#10 inputs = 'b011001; // first pattern
#10 inputs = 'b011011; // second pattern
#10 inputs = 'b011000; // third pattern
#10 inputs = 'b001000; // last pattern
end
9.9.2 Always construct/always结构
在整个仿真过程中,always结构不断重复执行。语法9-16展示了always结构的语法。
always结构,因为它循环的特性,只有当和一些形式的时序控制一起使用时有用。如果一个always结构对仿真时间向前无法控制,它将创建一个仿真死锁情景。
例如,下面的代码创建了一个零延迟无限循环:
always areg = ~areg;
为以上代码提供时序控制将创建一个潜在有用的描述,如下所示:
always #half_period areg = ~areg;