国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Verilog中的 條件語句\多路分支語句\循環(huán)語句

這篇具有很好參考價值的文章主要介紹了Verilog中的 條件語句\多路分支語句\循環(huán)語句。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Verilog中的條件語句\多分支語句\循環(huán)語句

一、背景

由于初學(xué)Verilog,故寫篇筆記記錄Verilog中的 if-else、case-endcasefor、while、repeat、forever語法,以及例子。

二、if-else

定個標(biāo)準(zhǔn),每個if-else的出現(xiàn)都要有begin-end語句。

2.1 標(biāo)準(zhǔn)結(jié)構(gòu)

條件語句標(biāo)準(zhǔn)使用結(jié)構(gòu):


if (condition1) begin
    true_statement1 ;
end
else if (condition2) begin
    true_statement2 ;
end
else if (condition3) begin
    true_statement3 ;
end
else begin
    default_statement ;
end
2.2 例子

二輸入選擇器:

if(en) begin
    if(sel == 2'b1) begin
        sout = p1 ;
    end
    else begin
        sout = p0 ;
    end
end

三、case-endcase

case 語句是一種多路條件分支的形式,可以解決 if 語句中有多個條件選項時使用不方便的問題。casexcasez 語句是 case 語句的變形,用來表示條件選項中的無關(guān)項。

3.1 標(biāo)準(zhǔn)結(jié)構(gòu)
case(case_expr)
    condition1: true_statement1 ;
    condition2: true_statement2 ;
    ……
    default: default_statement ;
endcase

casex 用 “x” 來表示無關(guān)值,casez 用問號 “?” 來表示無關(guān)值。

兩者的實現(xiàn)的功能是完全一致的,語法與 case 語句也完全一致。

但是 casexcasez 一般是不可綜合的,多用于仿真。

例如用 casez 語句來實現(xiàn)一個 4bit 控制端的 4 路選擇選擇器。

3.2 例子
3.2.1 三路選擇器的case部分,如下:
case(sel)
    2'b00:  sout_t = p0 ;
    2'b01:  sout_t = p1 ;
    2'b10:  sout_t = p2 ;
    default:    sout_t = p3 ;
endcase
3.2.2 casez的四路選擇器,如下:
module mux4to1(
    input [3:0]     sel ,
    input [1:0]     p0 ,
    input [1:0]     p1 ,
    input [1:0]     p2 ,
    input [1:0]     p3 ,
    output [1:0]    sout);
 
    reg [1:0]     sout_t ;
    always @(*)
        casez(sel)
            4'b???1:     sout_t = p0 ;
            4'b??1?:     sout_t = p1 ;
            4'b?1??:     sout_t = p2 ;
            4'b1???:     sout_t = p3 ;  
        default:         sout_t = 2'b0 ;
    endcase
    assign      sout = sout_t ;
 
endmodule

四、for

4.1 標(biāo)準(zhǔn)結(jié)構(gòu)

for 循環(huán)語法格式如下:

for(initial_assignment; condition ; step_assignment)  begin
    …
end
4.2 例子
// for 循環(huán)語句
integer      i ;
reg [3:0]    counter2 ;
initial begin
    counter2 = 'b0 ;
    for (i=0; i<=10; i=i+1) begin
        #10 ;
        counter2 = counter2 + 1'b1 ;
    end
end

五、repeat

repeat的功能是執(zhí)行固定次數(shù)的循環(huán),它不能像 while循環(huán)那樣用一個邏輯表達(dá)式來確定循環(huán)是否繼續(xù)執(zhí)行。repeat循環(huán)的次數(shù)必須是一個常量、變量或信號。如果循環(huán)次數(shù)是變量信號,則循環(huán)次數(shù)是開始執(zhí)行 repeat循環(huán)時變量信號的值。即便執(zhí)行期間,循環(huán)次數(shù)代表的變量信號值發(fā)生了變化,repeat執(zhí)行次數(shù)也不會改變。

5.1 標(biāo)準(zhǔn)結(jié)構(gòu)

repeat循環(huán)語法格式如下:

repeat (loop_times) begin
    …
end
5.2 例子
5.2.1 循環(huán)11次
// repeat 循環(huán)語句
reg [3:0]    counter3 ;
initial begin
    counter3 = 'b0 ;
    repeat (11) begin  //重復(fù)11次
        #10 ;
        counter3 = counter3 + 1'b1 ;
    end
end
5.2.2 存儲8個數(shù)據(jù)
always @(posedge clk or negedge rstn) begin
    j = 0  ;
    if (!rstn) begin
        repeat (8) begin
            buffer[j]   <= 'b0 ;      //沒有延遲的賦值,即同時賦值為0
            j = j + 1 ;
        end
    end
    else if (enable) begin
        repeat (8) begin
            @(posedge clk) buffer[j]    <= counter3 ;       //在下一個clk的上升沿賦值
            j = j + 1 ;
        end
     end
end

仿真結(jié)果如下圖。
由圖可知,rstn 拉高時,buffer的 8 個向量同時賦值為 0。

第二個時鐘周期后,buffer依次被counter3賦值,實現(xiàn)了連續(xù)存儲 8 個數(shù)據(jù)的功能。
Verilog中的 條件語句\多路分支語句\循環(huán)語句,verilog

六、forever

forever語句表示永久循環(huán),不包含任何條件表達(dá)式,一旦執(zhí)行便無限的執(zhí)行下去,系統(tǒng)函數(shù)$finish可退出forever。
forever相當(dāng)于while(1)。
通常,forever 循環(huán)是和時序控制結(jié)構(gòu)配合使用的。

6.1 標(biāo)準(zhǔn)結(jié)構(gòu)

forever循環(huán)語法格式如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-672224.html

forever begin
    …
end
6.2 例子
6.2.1 產(chǎn)生一個時鐘
reg          clk ;
initial begin
    clk       = 0 ;
    forever begin
        clk = ~clk ;
        #5 ;
    end
end
6.2.2 實現(xiàn)一個時鐘邊沿控制的寄存器間數(shù)據(jù)傳輸功能
reg    clk ;
reg    data_in, data_temp ;
initial begin
    forever @(posedge clk)      data_temp = data_in ;
end

到了這里,關(guān)于Verilog中的 條件語句\多路分支語句\循環(huán)語句的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Verilog循環(huán)語句(for、while、foever和repeat)

    本文主要介紹verilog常用的循環(huán)語句,循環(huán)語句的用途,主要是可以多次執(zhí)行相同的代碼或邏輯。 verilog的循環(huán)語句主要有:for循環(huán)、while循環(huán)、foever循環(huán)和repeat循環(huán)。 注意注意,for循環(huán)在正式FPGA設(shè)計中部分情況下可綜合,其余幾個循環(huán)語句均不可綜合,主要用于testbench。 f

    2024年02月04日
    瀏覽(19)
  • verilog中的for 循環(huán)

    verilog中的for 循環(huán)

    例1. 令x=3,仿真結(jié)果 綜合結(jié)果: for循環(huán)n次代表有n個相似的電路模塊存在;代碼上的“循環(huán)反饋”結(jié)構(gòu)在阻塞賦值時代表前后有關(guān)聯(lián) 綜合結(jié)果既不是一個加法器循環(huán)三次(C語言),也不是三個并聯(lián)的加法器(generate for),而是三個加法器串聯(lián) 注: input [7:0] n Error (10119): Verilog HD

    2023年04月10日
    瀏覽(23)
  • verilog中的3種for循環(huán)的寫法

    verilog中的3種for循環(huán)的寫法

    直接進(jìn)入正題,對于for循環(huán)的三種循環(huán)做以下介紹: for循環(huán)用于例化多個模塊 注意點: (1)例化模塊在for循環(huán)內(nèi)部 (2)for循環(huán)需加名字 (3)genvar 定義在generate外面,可以全局使用(不推薦使用,最好一個generate for,對應(yīng)一個循環(huán)變量) for循環(huán)寫多個always塊或者寫多個

    2023年04月11日
    瀏覽(17)
  • Verilog force語句詳解:FPGA中的信號強(qiáng)制賦值

    Verilog force語句詳解:FPGA中的信號強(qiáng)制賦值 在FPGA開發(fā)中,時序分析和調(diào)試是非常重要的一部分。其中,對于一些信號的調(diào)試,我們需要準(zhǔn)確地模擬不同的情況來檢測其工作狀態(tài)。這時,Verilog force語句就起到了重要的作用。 force語句可以使信號立即進(jìn)行強(qiáng)制賦值操作,在仿真

    2024年02月06日
    瀏覽(26)
  • 【FPGA/verilog -入門學(xué)習(xí)4】verilog 實現(xiàn)多路脈沖計數(shù)

    【FPGA/verilog -入門學(xué)習(xí)4】verilog 實現(xiàn)多路脈沖計數(shù)

    設(shè)計一個脈沖計數(shù)器,其功能如下 輸入脈沖:4路脈沖信號,分別對每路進(jìn)行脈沖檢測并計數(shù) 使能信號:高電平進(jìn)行計數(shù),低電平清零計數(shù)器 計數(shù)器:在使能信號高電平期間,對脈沖信號的上升沿進(jìn)行檢測并遞增計數(shù)值 編寫測試腳本,進(jìn)行仿真驗證 使用上一章的一路脈沖檢

    2024年02月04日
    瀏覽(24)
  • Verilog中的force語句用來強(qiáng)制更改信號的值,特別適用于仿真和調(diào)試。本文將深入探討force語句在FPGA開發(fā)中的應(yīng)用和注意事項。

    Verilog中的force語句用來強(qiáng)制更改信號的值,特別適用于仿真和調(diào)試。本文將深入探討force語句在FPGA開發(fā)中的應(yīng)用和注意事項。 首先,我們需要了解force語句的語法。其基本格式為force [time] signal = value。其中,time是可選參數(shù),表示在何時開始強(qiáng)制更改信號的值;signal是要更改的

    2024年02月12日
    瀏覽(231)
  • Verilog數(shù)字系統(tǒng)設(shè)計——4 選1 多路選擇器

    Verilog數(shù)字系統(tǒng)設(shè)計——4 選1 多路選擇器

    試分別使用assign、門級原語和always 語句設(shè)計4 選1 多路選擇器,并寫出測試代碼進(jìn)行測試。要求編制測試模塊對實現(xiàn)的邏輯功能進(jìn)行完整的測試; 實驗提交Verilog設(shè)計文件(.v文件)和仿真波形截圖,文件打包,壓縮包以自己的學(xué)號+姓名命名; 仿真截圖 下面展示一些 內(nèi)聯(lián)代碼

    2024年02月08日
    瀏覽(25)
  • FPGA的verilog關(guān)于多路選擇器(2選1)的設(shè)計

    FPGA的verilog關(guān)于多路選擇器(2選1)的設(shè)計

    ??????? 實驗?zāi)康?實現(xiàn)一個多路選擇器,進(jìn)行“2選1”。也就是對2個信號進(jìn)行1個特定條件的篩選,滿足這個特定條件的話,其中一個的數(shù)值或信息就成為輸出信號的數(shù)值或信息。不滿足此條件的,就輸出另一個信號的數(shù)值和信息。 實驗原理 理論原理 2個輸入信號,選

    2024年02月07日
    瀏覽(24)
  • 【FPGA】Verilog 實踐:MUX 多路復(fù)用器 | Multiplexer | 實現(xiàn) 4 到 1 線路多路復(fù)用器

    【FPGA】Verilog 實踐:MUX 多路復(fù)用器 | Multiplexer | 實現(xiàn) 4 到 1 線路多路復(fù)用器

    0x00 MUX 多路復(fù)用器(Multiplexer) 多路復(fù)用器 (Multiplexer,簡稱 MUX) 是一種電路,用于從多個輸入中選擇一個特定輸入。它為 ?個輸入提供一個輸出,并有 ?個 select single,作用是從多個輸入中選擇一個。 多路復(fù)用器有兩個主要部分:選擇器和數(shù)據(jù)線。選擇器用于選擇輸入信號中

    2024年02月04日
    瀏覽(72)
  • 多路彩燈控制器LED流水燈花型verilog仿真圖視頻、源代碼

    多路彩燈控制器LED流水燈花型verilog仿真圖視頻、源代碼

    名稱:多路彩燈控制器LED流水燈花型verilog 軟件:Quartus 語言:Verilog 代碼功能: ? ? ?用quartus和modelism,設(shè)計一個多路彩燈控制器,能夠使花型循環(huán)變化,具有復(fù)位清零功能,并可以選擇花型變化節(jié)奏。具體要求如下:? 1)彩燈控制器由16路發(fā)光二極管構(gòu)成,當(dāng)控制開關(guān)打開時

    2024年02月04日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包