設計背景:
不管是在什么軟件和硬件語言,我們在我們的代碼中都或多或少的用到這兩條語句,if..else與case語句,今天我們將學習verilog中的這兩條語句,其實不管在什么語言中這兩個語句都是一樣的邏輯。
設計原理:
if...else 條件語句的作用是根據指定的端盤條件是否滿足來確定下一步要執行的操作他們的書寫格式如下
(1)if (條件語句) (2)if(條件語句) (3)if(條件語句)
語句 語句 語句
else else if(條件語句)
語句 語句
else
語句
(1)語句是if(條件語句)滿足則條件成立,也就是這個邏輯執行結果為1,則執行條件語句成立執行的語句,如果不滿足,就執行else給出的條件語塊,然后才推出這個條件語句。
(2)語句是if(條件語句)滿足則條件成立,也就是這個邏輯執行結果為1,則執行條件語句成立執行的語句,如果不滿足則直接推出條件語句。
(3)語句是if(條件語句)滿足則條件成立,也就是這個邏輯執行結果為1,則執行條件語句成立執行的語句,如果不滿足,就判斷else if(語句塊)是否滿足,如果滿足就就執行else if 條件給出的語句,如果也不滿足這個條件就執行else 給出的語句,然后執行完就退出條件語句。
if ... else 條件語句也允許語句的嵌套也就是
if(...)
..
else
if()
...
else
等語句塊
代碼演示 :
module led_run (a, b, c);
input a, b; //定義輸入輸出
output reg c;
always @ (*)
if(a) //判斷a是否為1
c = b; //如果是1的話,就是b的值給c
else
c = ~b; //如果不是1的話,就把b的反值給c
endmodule
仿真圖:
仿真中我們可以看到和我們寫的分析邏輯一樣,a = 1 的時候。b = 0, c = 0 ,a = 0的時候, b = 0,c = 1 ........
case 語句是另一種可以實現多路分支控制的分支語句,和使用if - else 相比,采用case 語句實現多路控制看起來代碼邏輯看起來更加清楚明了。
case (控制表達式)
<分支表達式1> : 語句塊 1
<分支表達式2> : 語句塊 2
<分支表達式3> : 語句塊 3
...............
default : 語句塊;
endcase
控制表達式代表著對程序流向進行控制的控制信號,各個分支語句表達式代表著控制表達式的狀態取值,通常分支表達式都是一些常量表達式,各個語句在分支表達式滿足的情況下執行相應的語句塊語句,最后有一個關鍵字default 分支項,這個項可以缺失,在case語句中分支語句的值各不相同,如果相同就會出現矛盾的現象,這應該不是我們想要的。
代碼演示 :
0moduleled_run (a,b,sel,c);
1
2 inputa,b; //定義輸入輸出
3 input[1:0]sel;//輸入選擇位
4 outputregc;
5
6 always@(*)
7 case(sel)
8 2'b00 :c =a;//選擇位為0,把a值給c
9 2'b01:c =b; //選擇位為1,把b值給c
10 2'b10:c =~a;//選擇位為2,把a反值給c
11 2'b11:c =~b;//選擇位為3,把a反值給c
12 default:c =0;//否則c =0
13 endcase
14
15endmodule
仿真圖:
仿真中我們可以看到和我們寫的分析邏輯一樣,a = 1 的時候。b = 0,sel = 1;c = 0 ,a = 1的時候, b = 0,sel = 0,c = 1 ........
-
Case
+關注
關注
0文章
27瀏覽量
13367
發布評論請先 登錄
相關推薦
評論