中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Verilog關鍵詞的多分支語句怎么實現

發布時間:2023-04-11 14:56:53 來源:億速云 閱讀:114 作者:iii 欄目:開發技術

今天小編給大家分享一下Verilog關鍵詞的多分支語句怎么實現的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

關鍵詞:case,選擇器

case 語句是一種多路條件分支的形式,可以解決 if 語句中有多個條件選項時使用不方便的問題。

case 語句

case 語句格式如下:

case(case_expr)
    condition1     :             true_statement1 ;
    condition2     :             true_statement2 ;
    ……
    default        :             default_statement ;
endcase

case 語句執行時,如果 condition1 為真,則執行 true_statement1 ; 如果 condition1 為假,condition2 為真,則執行 true_statement2;依次類推。如果各個 condition 都不為真,則執行 default_statement 語句。

default 語句是可選的,且在一個 case 語句中不能有多個 default 語句。

條件選項可以有多個,不僅限于 condition1、condition2 等,而且這些條件選項不要求互斥。雖然這些條件選項是并發比較的,但執行效果是誰在前且條件為真誰被執行。

ture_statement1 等執行語句可以是一條語句,也可以是多條。如果是多條執行語句,則需要用 begin 與 end 關鍵字進行說明。

case 語句支持嵌套使用。

下面用 case 語句代替 if 語句實現了一個 4 路選擇器的功能。仿真結果與 testbench 可參考條件語句一章,兩者完全一致。

module mux4to1(
    input [1: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 @(*)
        case(sel)
            2'b00:   begin      
                    sout_t = p0 ;
                end
            2'b01:       sout_t = p1 ;
            2'b10:       sout_t = p2 ;
            default:     sout_t = p3 ;
        endcase
    assign sout = sout_t ;
 
endmodule

case 語句中的條件選項表單式不必都是常量,也可以是 x 值或 z 值。

當多個條件選項下需要執行相同的語句時,多個條件選項可以用逗號分開,放在同一個語句塊的候選項中。

但是 case 語句中的 x 或 z 的比較邏輯是不可綜合的,所以一般不建議在 case 語句中使用 x 或 z 作為比較值。

例如,對 4 路選擇器的 case 語句進行擴展,舉例如下:

case(sel)
    2'b00:   sout_t = p0 ;
    2'b01:   sout_t = p1 ;
    2'b10:   sout_t = p2 ;
    2'b11:     sout_t = p3 ;
    2'bx0, 2'bx1, 2'bxz, 2'bxx, 2'b0x, 2'b1x, 2'bzx :
        sout_t = 2'bxx ;
    2'bz0, 2'bz1, 2'bzz, 2'b0z, 2'b1z :
        sout_t = 2'bzz ;
    default:  $display("Unexpected input control!!!");
endcase

casex/casez 語句

casex、 casez 語句是 case 語句的變形,用來表示條件選項中的無關項。

casex 用 "x" 來表示無關值,casez 用問號 "?" 來表示無關值。

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

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

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

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

以上就是“Verilog關鍵詞的多分支語句怎么實現”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

北碚区| 清河县| 石柱| 托克逊县| 海晏县| 灵丘县| 中西区| 山丹县| 益阳市| 南丰县| 金塔县| 信丰县| 陵川县| 巢湖市| 湛江市| 尚义县| 南丹县| 康乐县| 营口市| 黄石市| 江川县| 台江县| 云龙县| 丁青县| 开江县| 镇坪县| 沐川县| 宾川县| 鲁山县| 濉溪县| 元氏县| 彭阳县| 梓潼县| 旌德县| 鄂伦春自治旗| 平和县| 敖汉旗| 北辰区| 武胜县| 盱眙县| 县级市|