日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
講解Verilog語句塊

Verilog是一門類C語言,語法與C接近,但Verilog是硬件設(shè)計語言,與C實質(zhì)不同。

站在用戶的角度思考問題,與客戶深入溝通,找到合浦網(wǎng)站設(shè)計與合浦網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:做網(wǎng)站、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、雅安服務器托管、企業(yè)郵箱。業(yè)務覆蓋合浦地區(qū)。

  • Verilog代碼對應硬件實體。比如在Verilog里寫的
    a+b,最后會得到由硬件實現(xiàn)的加法器
  • Verilog代碼到硬件的過程叫
    綜合。綜合就是將Verilog代碼轉(zhuǎn)化為硬件實現(xiàn)
  • Verilog并行執(zhí)行

關(guān)鍵詞:順序塊,并行塊,嵌套塊,命名塊,disable

Verilog 語句塊提供了將兩條或更多條語句組成語法結(jié)構(gòu)上相當于一條一句的機制。主要包括兩種類型:順序塊和并行塊。

順序塊

順序塊用關(guān)鍵字 begin 和 end 來表示。

順序塊中的語句是一條條執(zhí)行的。當然,非阻塞賦值除外。

順序塊中每條語句的時延總是與其前面語句執(zhí)行的時間相關(guān)。

在本節(jié)之前的仿真中,initial 塊中的阻塞賦值,都是順序塊的實例。

并行塊

并行塊有關(guān)鍵字 fork 和 join 來表示。

并行塊中的語句是并行執(zhí)行的,即便是阻塞形式的賦值。

并行塊中每條語句的時延都是與塊語句開始執(zhí)行的時間相關(guān)。

順序塊與并行塊的區(qū)別顯而易見,下面用仿真說明。

仿真代碼如下:

實例

`timescale 1ns/1ns

module test ;
   reg [3:0]   ai_sequen, bi_sequen ;
   reg [3:0]   ai_paral,  bi_paral ;
   reg [3:0]   ai_nonblk, bi_nonblk ;

//============================================================//
   //(1)Sequence block
   initial begin
       #5 ai_sequen         = 4'd5 ;    //at 5ns
       #5 bi_sequen         = 4'd8 ;    //at 10ns
   end
   //(2)fork block
   initial fork
       #5 ai_paral          = 4'd5 ;    //at 5ns
       #5 bi_paral          = 4'd8 ;    //at 5ns
   join
   //(3)non-block block
   initial fork
       #5 ai_nonblk                 #5 bi_nonblk             join endmodule 

仿真結(jié)果如下:

如圖所示,順序塊順序執(zhí)行,第 10ns 時,信號 bi_sequen 才賦值為 8。 而并行塊,ai_paral 與 bi_paral 的賦值是同時執(zhí)行的,所以均在 5ns 時被賦值。

而非阻塞賦值,也能達到和并行塊同等的賦值效果。

嵌套塊

順序塊和并行塊還可以嵌套使用。

仿真代碼如下:

實例
`timescale      1ns/1ns

module test ;

   reg [3:0]   ai_sequen2, bi_sequen2 ;
   reg [3:0]   ai_paral2,  bi_paral2 ;
   initial begin
       ai_sequen2         = 4'd5 ;    //at 0ns        fork            #10 ai_paral2          = 4'd5 ;    //at 10ns
           #15 bi_paral2          = 4'd8 ;    //at 15ns
       join
       #20 bi_sequen2      = 4'd8 ;    //at 35ns
   end

endmodule

仿真結(jié)果如下:

并行塊語句塊內(nèi)是并行執(zhí)行,所以信號 ai_paral2 和信號 bi_paral2 分別在 10ns, 15ns 時被賦值。而并行塊中最長的執(zhí)行時間為 15ns,所以順序塊中的信號 bi_sequen2 在 35ns 時被賦值。

命名塊

我們可以給塊語句結(jié)構(gòu)命名。

命名的塊中可以聲明局部變量,通過層次名引用的方法對變量進行訪問。

仿真代碼如下:

實例

`timescale 1ns/1ns

module test;

   initial begin: runoob   //命名模塊名字為runoob,分號不能少
       integer    i ;       //此變量可以通過test.runoob.i 被其他模塊使用
       i = 0 ;
       forever begin
           #10 i = i + 10 ;      
       end
   end

   reg stop_flag ;
   initial stop_flag = 1'b0 ;    always begin : detect_stop        if ( test.runoob.i == 100) begin //i累加10次,即100ns時停止仿真            $display("Now you can stop the simulation!!!");            stop_flag = 1'b1 ;
       end
       #10 ;
   end

endmodule

仿真結(jié)果如下: 命名的塊也可以被禁用,用關(guān)鍵字 disable 來表示。

disable 可以終止命名塊的執(zhí)行,可以用來從循環(huán)中退出、處理錯誤等。

與 C 語言中 break 類似,但是 break 只能退出當前所在循環(huán),而 disable 可以禁用設(shè)計中任何一個命名的塊。

仿真代碼如下:

實例

`timescale 1ns/1ns

module test;

   initial begin: runoob_d //命名模塊名字為runoob_d
       integer    i_d ;
       i_d = 0 ;
       while(i_d# 10 ;
           if (i_d >= 50) begin       //累加5次停止累加
               disable runoob_d3.clk_gen ;//stop 外部block: clk_gen
               disable runoob_d2 ;       //stop 當前block: runoob_d2
           end
           i_d = i_d + 10 ;
       end
   end

   reg clk ;
   initial begin: runoob_d3
       while (1) begin: clk_gen  //時鐘產(chǎn)生模塊
           clk=1 ;      #10 ;
           clk=0 ;      #10 ;
       end
   end

endmodule

仿真結(jié)果如下:

由圖可知,信號 i_d 累加到 50 以后,便不再累加,以后 clk 時鐘也不再產(chǎn)生。

可見,disable 退出了當前的 while 塊。 需要說明的是,disable 在 always 或 forever 塊中使用時只能退出當前回合,下一次語句還是會在 always 或 forever 中執(zhí)行。因為 always 塊和 forever 塊是一直執(zhí)行的,此時的 disable 有點類似 C 語言中的 continue 功能。


新聞名稱:講解Verilog語句塊
鏈接地址:http://m.5511xx.com/article/dhojsps.html