找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2994|回复: 0
收起左侧

verilog中的initial语句

[复制链接]
ID:86860 发表于 2015-7-26 02:08 | 显示全部楼层 |阅读模式
  首先说说结构化过程语句,在verilog中有两种结构化的过程语句:initial语句和always语句,他们是行为级建模的两种基本语句。其他所有的行为语句只能出现在这两种语句里



与C语言不通,verilog在本质上是并发而非顺序的。verilog中的各个执行流程(进程)并发执行,而不是顺序执行的。每个initial语句和always语句代表一个独立的执行过程,每个执行过程从仿真时间0开始执行并且两种语句不能嵌套使用。下面举例解释之:

initial语句

所有的initial语句内的语句构成了一个initial块。initial块从仿真0时刻开始执行,在整个仿真过程中只执行一次。如果一个模块中包括了若干个initial块,则这些initial块从仿真0时刻开始并发执行,且每个块的执行是各自独立的。如果在块内包含了多条行为语句,那么需要将这些语句组成一组,一般式使用关键字begin和end将他们组合在一个块语句;如果块内只有一条语句,则不必使用begin和end.下面给出了initial语句的例子:

    module stimulus  

    reg x,y, a,b, m  

    initial  
        m = 1'b0;  

    initial  
    begin  
        #5 a = 1'b1;  
        #25 b = 1'b0;  
    end  

    initial  
    begin  
        #10 x = 1'b0;  
        #25 y = 1'b1;  
    end  

    initial  
        #50 $finish;  

    endmodule  



在上面例子中,三条initial语句在仿真0时刻开始并行执行。如果在某一条语句前面存在延迟#,那么这条initial语句的仿真将会停顿下来,在经过指定的延迟时间之后再继续执行。因此上面的initial语句执行顺序为:

    时间              所执行的语句  
    0                   m = 1'b0;  
    5                   a = 1'b1;  
    10                  x = 1'b0;  
    30                  b = 1'b0;  
    35                  y = 1'b1;  
    50                  $finish;  

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表