• initial


    摘自http://blog.csdn.net/liming0931/article/details/7039680

    首先说说结构化过程语句,在verilog中有两种结构化的过程语句:initial语句和always语句,他们是行为级建模的两种基本语句。其他所有的行为语句只能出现在这两种语句里

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

    initial语句

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

    [cpp] view plain copy
     
    1. module stimulus  
    2.   
    3. reg x,y, a,b, m  
    4.   
    5. initial  
    6.     m = 1'b0;  
    7.       
    8. initial  
    9. begin  
    10.     #5 a = 1'b1;  
    11.     #25 b = 1'b0;  
    12. end  
    13.   
    14. initial  
    15. begin  
    16.     #10 x = 1'b0;  
    17.     #25 y = 1'b1;  
    18. end  
    19.   
    20. initial  
    21.     #50 $finish;  
    22.       
    23. endmodule  


     


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

    [cpp] view plain copy
     
    1. 时间              所执行的语句  
    2. 0                   m = 1'b0;  
    3. 5                   a = 1'b1;  
    4. 10                  x = 1'b0;  
    5. 30                  b = 1'b0;  
    6. 35                  y = 1'b1;  
    7. 50                  $finish;  


     

    摘自《VerilogHDL数字设计与综合(第二版)》夏宇闻译

  • 相关阅读:
    ES5-Array的新增方法
    ES5-Object扩展方法
    JS利用HTML5的Web Worker实现多线程
    git合并分支到master上面
    JS线程及回调函数执行
    JS实现继承
    蓝桥杯 高精度加法
    蓝桥杯 阶乘计算
    【题集】k倍区间(抽屉原理)
    代码填空:全排列
  • 原文地址:https://www.cnblogs.com/xiaoxuesheng993/p/8244786.html
Copyright © 2020-2023  润新知