Verilog關鍵詞的多分支語句實例詳解
關鍵詞:case,選擇器
case 語句是一種多路條件分支的形式,可以解決 if 語句中有多個條件選項時使用不方便的問題。
case 語句
case 語句格式如下:
case(case_expr)
condition1 : true_statement1 ;
condition2 : true_statement2 ;
……
default : default_statement ;
endcase
case 語句執(zhí)行時,如果 condition1 為真,則執(zhí)行 true_statement1 ; 如果 condition1 為假,condition2 為真,則執(zhí)行 true_statement2;依次類推。如果各個 condition 都不為真,則執(zhí)行 default_statement 語句。
default 語句是可選的,且在一個 case 語句中不能有多個 default 語句。
條件選項可以有多個,不僅限于 condition1、condition2 等,而且這些條件選項不要求互斥。雖然這些條件選項是并發(fā)比較的,但執(zhí)行效果是誰在前且條件為真誰被執(zhí)行。
ture_statement1 等執(zhí)行語句可以是一條語句,也可以是多條。如果是多條執(zhí)行語句,則需要用 begin 與 end 關鍵字進行說明。
case 語句支持嵌套使用。
下面用 case 語句代替 if 語句實現(xiàn)了一個 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 值。
當多個條件選項下需要執(zhí)行相同的語句時,多個條件選項可以用逗號分開,放在同一個語句塊的候選項中。
但是 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 用問號 "?" 來表示無關值。
兩者的實現(xiàn)的功能是完全一致的,語法與 case 語句也完全一致。
但是 casex、casez 一般是不可綜合的,多用于仿真。
例如用 casez 語句來實現(xiàn)一個 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關鍵詞的多分支語句實例詳解的詳細內(nèi)容,更多關于Verilog關鍵詞多分支語句的資料請關注腳本之家其它相關文章!
相關文章
腳本發(fā)生錯誤怎么解決 當前頁的腳本發(fā)生錯誤的解決方法小結
我們經(jīng)常在訪問網(wǎng)頁的時候,右下角經(jīng)常出現(xiàn)腳本錯誤提示,記得一家國外的銀行因為這個原因導致業(yè)務受到很大的影響,如果放到網(wǎng)站上對用戶也容易產(chǎn)生一些錯覺,網(wǎng)站有問題,不安全等等疑問2011-12-12
在InstallShield中引用WINSOCK 的示例代碼
在InstallShield中引用WINSOCK 的示例代碼...2007-03-03

