Verilog HDL 中的所有过程都是在以下四种语句结构之一中指定的:
- initial结构
- always结构
- 任务(task)
- 函数(function)
initial结构和always结构在仿真开始时就启用。initial结构体只执行一次,语句结束后其活动也将停止。与此相反,always结构体将重复执行。只有当仿真结束时,它的活动才会停止。initial结构体和always结构体之间没有执行先后。module中可定义的initial结构体和always结构体的数量不受限制。任务和函数则从其他过程的一个或多个位置启用,其具体细节将在后文中描述。
1,initial结构
initial结构的语法规则如下表1所示:
表1:initial结构的语法规则
下面的示例说明了在仿真开始时使用initial结构体初始化变量的情况:
initial结构体的另一种典型用法是指定波形描述,只执行一次,为仿真电路提供初始激励信号。
2,always结构
always 结构在整个仿真过程中不断重复执行,其语法规则如下表2所示:
表2:always结构的语法规则
always 结构因其循环特性,只有在与某种形式的时序控制结合使用时才有用。如果always 结构无法控制仿真时间的推进,就会造成仿真死锁。例如,下面的代码创建了一个零延迟的无限循环:
always areg = ~areg;
为上述代码提供一个时序控制,就可以创建一个有用的描述(时钟源),如下所示:
always #half_period areg = ~areg;
点赞加关注博主(ID:FPGA小飞)的博文,咱们一起系统学习verilog最终标准IEEE Std 1364-2005吧!