【Verilog-9.9】initial和always的用法

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;

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值