找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3801|回復: 0
打印 上一主題 下一主題
收起左側

verilog中的initial語句

[復制鏈接]
跳轉到指定樓層
樓主
ID:86860 發(fā)表于 2015-7-26 02:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  首先說說結構化過程語句,在verilog中有兩種結構化的過程語句:initial語句和always語句,他們是行為級建模的兩種基本語句。其他所有的行為語句只能出現(xiàn)在這兩種語句里



與C語言不通,verilog在本質上是并發(fā)而非順序的。verilog中的各個執(zhí)行流程(進程)并發(fā)執(zhí)行,而不是順序執(zhí)行的。每個initial語句和always語句代表一個獨立的執(zhí)行過程,每個執(zhí)行過程從仿真時間0開始執(zhí)行并且兩種語句不能嵌套使用。下面舉例解釋之:

initial語句

所有的initial語句內的語句構成了一個initial塊。initial塊從仿真0時刻開始執(zhí)行,在整個仿真過程中只執(zhí)行一次。如果一個模塊中包括了若干個initial塊,則這些initial塊從仿真0時刻開始并發(fā)執(zhí)行,且每個塊的執(zhí)行是各自獨立的。如果在塊內包含了多條行為語句,那么需要將這些語句組成一組,一般式使用關鍵字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時刻開始并行執(zhí)行。如果在某一條語句前面存在延遲#,那么這條initial語句的仿真將會停頓下來,在經(jīng)過指定的延遲時間之后再繼續(xù)執(zhí)行。因此上面的initial語句執(zhí)行順序為:

    時間              所執(zhí)行的語句  
    0                   m = 1'b0;  
    5                   a = 1'b1;  
    10                  x = 1'b0;  
    30                  b = 1'b0;  
    35                  y = 1'b1;  
    50                  $finish;  

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表