Verilog關(guān)鍵詞的多分支語(yǔ)句實(shí)例詳解
關(guān)鍵詞:case,選擇器
case 語(yǔ)句是一種多路條件分支的形式,可以解決 if 語(yǔ)句中有多個(gè)條件選項(xiàng)時(shí)使用不方便的問(wèn)題。
case 語(yǔ)句
case 語(yǔ)句格式如下:
case(case_expr) condition1 : true_statement1 ; condition2 : true_statement2 ; …… default : default_statement ; endcase
case 語(yǔ)句執(zhí)行時(shí),如果 condition1 為真,則執(zhí)行 true_statement1 ; 如果 condition1 為假,condition2 為真,則執(zhí)行 true_statement2;依次類推。如果各個(gè) condition 都不為真,則執(zhí)行 default_statement 語(yǔ)句。
default 語(yǔ)句是可選的,且在一個(gè) case 語(yǔ)句中不能有多個(gè) default 語(yǔ)句。
條件選項(xiàng)可以有多個(gè),不僅限于 condition1、condition2 等,而且這些條件選項(xiàng)不要求互斥。雖然這些條件選項(xiàng)是并發(fā)比較的,但執(zhí)行效果是誰(shuí)在前且條件為真誰(shuí)被執(zhí)行。
ture_statement1 等執(zhí)行語(yǔ)句可以是一條語(yǔ)句,也可以是多條。如果是多條執(zhí)行語(yǔ)句,則需要用 begin 與 end 關(guān)鍵字進(jìn)行說(shuō)明。
case 語(yǔ)句支持嵌套使用。
下面用 case 語(yǔ)句代替 if 語(yǔ)句實(shí)現(xiàn)了一個(gè) 4 路選擇器的功能。仿真結(jié)果與 testbench 可參考條件語(yǔ)句一章,兩者完全一致。
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 語(yǔ)句中的條件選項(xiàng)表單式不必都是常量,也可以是 x 值或 z 值。
當(dāng)多個(gè)條件選項(xiàng)下需要執(zhí)行相同的語(yǔ)句時(shí),多個(gè)條件選項(xiàng)可以用逗號(hào)分開(kāi),放在同一個(gè)語(yǔ)句塊的候選項(xiàng)中。
但是 case 語(yǔ)句中的 x 或 z 的比較邏輯是不可綜合的,所以一般不建議在 case 語(yǔ)句中使用 x 或 z 作為比較值。
例如,對(duì) 4 路選擇器的 case 語(yǔ)句進(jìn)行擴(kuò)展,舉例如下:
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 語(yǔ)句
casex、 casez 語(yǔ)句是 case 語(yǔ)句的變形,用來(lái)表示條件選項(xiàng)中的無(wú)關(guān)項(xiàng)。
casex 用 "x" 來(lái)表示無(wú)關(guān)值,casez 用問(wèn)號(hào) "?" 來(lái)表示無(wú)關(guān)值。
兩者的實(shí)現(xiàn)的功能是完全一致的,語(yǔ)法與 case 語(yǔ)句也完全一致。
但是 casex、casez 一般是不可綜合的,多用于仿真。
例如用 casez 語(yǔ)句來(lái)實(shí)現(xiàn)一個(gè) 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關(guān)鍵詞的多分支語(yǔ)句實(shí)例詳解的詳細(xì)內(nèi)容,更多關(guān)于Verilog關(guān)鍵詞多分支語(yǔ)句的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Macromedia Flex 標(biāo)記語(yǔ)言簡(jiǎn)介
Macromedia Flex 標(biāo)記語(yǔ)言簡(jiǎn)介...2007-01-01腳本發(fā)生錯(cuò)誤怎么解決 當(dāng)前頁(yè)的腳本發(fā)生錯(cuò)誤的解決方法小結(jié)
我們經(jīng)常在訪問(wèn)網(wǎng)頁(yè)的時(shí)候,右下角經(jīng)常出現(xiàn)腳本錯(cuò)誤提示,記得一家國(guó)外的銀行因?yàn)檫@個(gè)原因?qū)е聵I(yè)務(wù)受到很大的影響,如果放到網(wǎng)站上對(duì)用戶也容易產(chǎn)生一些錯(cuò)覺(jué),網(wǎng)站有問(wèn)題,不安全等等疑問(wèn)2011-12-12Verilog語(yǔ)言的循環(huán)語(yǔ)句示例詳解
這篇文章主要為大家介紹了Verilog語(yǔ)言的循環(huán)語(yǔ)句示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04Verilog關(guān)鍵詞的條件語(yǔ)句實(shí)例詳解
這篇文章主要為大家介紹了Verilog關(guān)鍵詞的條件語(yǔ)句實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04在InstallShield中引用WINSOCK 的示例代碼
在InstallShield中引用WINSOCK 的示例代碼...2007-03-03