設(shè)計(jì)背景:
不管是在什么軟件和硬件語(yǔ)言,我們?cè)谖覀兊拇a中都或多或少的用到這兩條語(yǔ)句,if..else與case語(yǔ)句,今天我們將學(xué)習(xí)verilog中的這兩條語(yǔ)句,其實(shí)不管在什么語(yǔ)言中這兩個(gè)語(yǔ)句都是一樣的邏輯。
設(shè)計(jì)原理:
if...else 條件語(yǔ)句的作用是根據(jù)指定的端盤(pán)條件是否滿(mǎn)足來(lái)確定下一步要執(zhí)行的操作他們的書(shū)寫(xiě)格式如下
(1)if (條件語(yǔ)句) (2)if(條件語(yǔ)句) (3)if(條件語(yǔ)句)
語(yǔ)句 語(yǔ)句 語(yǔ)句
else else if(條件語(yǔ)句)
語(yǔ)句 語(yǔ)句
else
語(yǔ)句
(1)語(yǔ)句是if(條件語(yǔ)句)滿(mǎn)足則條件成立,也就是這個(gè)邏輯執(zhí)行結(jié)果為1,則執(zhí)行條件語(yǔ)句成立執(zhí)行的語(yǔ)句,如果不滿(mǎn)足,就執(zhí)行else給出的條件語(yǔ)塊,然后才推出這個(gè)條件語(yǔ)句。
(2)語(yǔ)句是if(條件語(yǔ)句)滿(mǎn)足則條件成立,也就是這個(gè)邏輯執(zhí)行結(jié)果為1,則執(zhí)行條件語(yǔ)句成立執(zhí)行的語(yǔ)句,如果不滿(mǎn)足則直接推出條件語(yǔ)句。
(3)語(yǔ)句是if(條件語(yǔ)句)滿(mǎn)足則條件成立,也就是這個(gè)邏輯執(zhí)行結(jié)果為1,則執(zhí)行條件語(yǔ)句成立執(zhí)行的語(yǔ)句,如果不滿(mǎn)足,就判斷else if(語(yǔ)句塊)是否滿(mǎn)足,如果滿(mǎn)足就就執(zhí)行else if 條件給出的語(yǔ)句,如果也不滿(mǎn)足這個(gè)條件就執(zhí)行else 給出的語(yǔ)句,然后執(zhí)行完就退出條件語(yǔ)句。
if ... else 條件語(yǔ)句也允許語(yǔ)句的嵌套也就是
if(...)
..
else
if()
...
else
等語(yǔ)句塊
代碼演示 :
module led_run (a, b, c);
input a, b; //定義輸入輸出
output reg c;
always @ (*)
if(a) //判斷a是否為1
c = b; //如果是1的話(huà),就是b的值給c
else
c = ~b; //如果不是1的話(huà),就把b的反值給c
endmodule
仿真圖:
仿真中我們可以看到和我們寫(xiě)的分析邏輯一樣,a = 1 的時(shí)候。b = 0, c = 0 ,a = 0的時(shí)候, b = 0,c = 1 ........
case 語(yǔ)句是另一種可以實(shí)現(xiàn)多路分支控制的分支語(yǔ)句,和使用if - else 相比,采用case 語(yǔ)句實(shí)現(xiàn)多路控制看起來(lái)代碼邏輯看起來(lái)更加清楚明了。
case (控制表達(dá)式)
<分支表達(dá)式1> : 語(yǔ)句塊 1
<分支表達(dá)式2> : 語(yǔ)句塊 2
<分支表達(dá)式3> : 語(yǔ)句塊 3
...............
default : 語(yǔ)句塊;
endcase
控制表達(dá)式代表著對(duì)程序流向進(jìn)行控制的控制信號(hào),各個(gè)分支語(yǔ)句表達(dá)式代表著控制表達(dá)式的狀態(tài)取值,通常分支表達(dá)式都是一些常量表達(dá)式,各個(gè)語(yǔ)句在分支表達(dá)式滿(mǎn)足的情況下執(zhí)行相應(yīng)的語(yǔ)句塊語(yǔ)句,最后有一個(gè)關(guān)鍵字default 分支項(xiàng),這個(gè)項(xiàng)可以缺失,在case語(yǔ)句中分支語(yǔ)句的值各不相同,如果相同就會(huì)出現(xiàn)矛盾的現(xiàn)象,這應(yīng)該不是我們想要的。
代碼演示 :
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
仿真圖:
仿真中我們可以看到和我們寫(xiě)的分析邏輯一樣,a = 1 的時(shí)候。b = 0,sel = 1;c = 0 ,a = 1的時(shí)候, b = 0,sel = 0,c = 1 ........
-
Case
+關(guān)注
關(guān)注
0文章
28瀏覽量
13831
發(fā)布評(píng)論請(qǐng)先 登錄
Atmel AT17LV系列FPGA配置EEPROM的全面解析
智多晶正式發(fā)布Seal 5000系列新品SA5T-200 FPGA芯片
Altera Agilex 5系列FPGA與SoC產(chǎn)品榮膺2025全球電子成就獎(jiǎng)
Altera Agilex 5 D系列FPGA和SoC家族全面升級(jí)
開(kāi)源RISC-V處理器(蜂鳥(niǎo)E203)學(xué)習(xí)(二)修改FPGA綜合環(huán)境(移植到自己的Xilinx FPGA板卡)
開(kāi)發(fā)單片機(jī)需要學(xué)習(xí)什么?軟件編程的 4 個(gè)關(guān)鍵層次
FPGA在機(jī)器學(xué)習(xí)中的具體應(yīng)用
智多晶推出新一代SA5T-200系列FPGA器件
AGM AG32VH(MCU+FPGA+PSRAM) 系列應(yīng)用指南
Xilinx Ultrascale系列FPGA的時(shí)鐘資源與架構(gòu)解析
小眼睛科技泰坦系列等FPGA新品亮相2024紫光同創(chuàng)FPGA研討會(huì)武漢站&amp;南京站
【干貨】基于串口的FPGA遠(yuǎn)程升級(jí)
FPGA學(xué)習(xí)系列:if-else與case
評(píng)論