0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA學(xué)習(xí)系列:if-else與case

FPGA學(xué)習(xí)交流 ? 2018-06-01 16:59 ? 次閱讀

設(shè)計(jì)背景:

不管是在什么軟件和硬件語言,我們?cè)谖覀兊拇a中都或多或少的用到這兩條語句,if..else與case語句,今天我們將學(xué)習(xí)verilog中的這兩條語句,其實(shí)不管在什么語言中這兩個(gè)語句都是一樣的邏輯。

設(shè)計(jì)原理:

if...else 條件語句的作用是根據(jù)指定的端盤條件是否滿足來確定下一步要執(zhí)行的操作他們的書寫格式如下

(1)if (條件語句) (2)if(條件語句) (3)if(條件語句)

語句 語句 語句

else else if(條件語句)

語句 語句

else

語句

(1)語句是if(條件語句)滿足則條件成立,也就是這個(gè)邏輯執(zhí)行結(jié)果為1,則執(zhí)行條件語句成立執(zhí)行的語句,如果不滿足,就執(zhí)行else給出的條件語塊,然后才推出這個(gè)條件語句。


(2)語句是if(條件語句)滿足則條件成立,也就是這個(gè)邏輯執(zhí)行結(jié)果為1,則執(zhí)行條件語句成立執(zhí)行的語句,如果不滿足則直接推出條件語句。


(3)語句是if(條件語句)滿足則條件成立,也就是這個(gè)邏輯執(zhí)行結(jié)果為1,則執(zhí)行條件語句成立執(zhí)行的語句,如果不滿足,就判斷else if(語句塊)是否滿足,如果滿足就就執(zhí)行else if 條件給出的語句,如果也不滿足這個(gè)條件就執(zhí)行else 給出的語句,然后執(zhí)行完就退出條件語句。

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 的時(shí)候。b = 0, c = 0 ,a = 0的時(shí)候, b = 0,c = 1 ........

case 語句是另一種可以實(shí)現(xiàn)多路分支控制的分支語句,和使用if - else 相比,采用case 語句實(shí)現(xiàn)多路控制看起來代碼邏輯看起來更加清楚明了。

case (控制表達(dá)式)

<分支表達(dá)式1> : 語句塊 1

<分支表達(dá)式2> : 語句塊 2

<分支表達(dá)式3> : 語句塊 3

...............

default : 語句塊;

endcase

控制表達(dá)式代表著對(duì)程序流向進(jìn)行控制的控制信號(hào),各個(gè)分支語句表達(dá)式代表著控制表達(dá)式的狀態(tài)取值,通常分支表達(dá)式都是一些常量表達(dá)式,各個(gè)語句在分支表達(dá)式滿足的情況下執(zhí)行相應(yīng)的語句塊語句,最后有一個(gè)關(guān)鍵字default 分支項(xiàng),這個(gè)項(xiàng)可以缺失,在case語句中分支語句的值各不相同,如果相同就會(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

仿真圖:


仿真中我們可以看到和我們寫的分析邏輯一樣,a = 1 的時(shí)候。b = 0,sel = 1;c = 0 ,a = 1的時(shí)候, b = 0,sel = 0,c = 1 ........


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Case
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    13351
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA加速深度學(xué)習(xí)模型的案例

    FPGA(現(xiàn)場(chǎng)可編程門陣列)加速深度學(xué)習(xí)模型是當(dāng)前硬件加速領(lǐng)域的一個(gè)熱門研究方向。以下是一些FPGA加速深度學(xué)習(xí)模型的案例: 一、基于FPGA
    的頭像 發(fā)表于 10-25 09:22 ?45次閱讀

    FPGA學(xué)習(xí)筆記-入門

    大概10年前,大學(xué)同學(xué)建議我學(xué)習(xí)DSP。當(dāng)因?yàn)楣ぷ髅Γ仓皇呛?jiǎn)單學(xué)習(xí)了DSP的一些基礎(chǔ)知識(shí),沒有進(jìn)一步深入學(xué)習(xí)和時(shí)間。結(jié)果現(xiàn)在,好像DSP已經(jīng)不再是主流了,現(xiàn)在有了FPGA。 現(xiàn)在想想
    發(fā)表于 04-09 10:55

    FPGA初步學(xué)習(xí)印象

    了。FPGA出現(xiàn)后,也想學(xué)習(xí)學(xué)習(xí)這方面的知識(shí)。抱著先簡(jiǎn)單學(xué)習(xí)下的態(tài)度,在網(wǎng)上找資料看看。感覺FPGA,就像是利用芯片內(nèi)部資源,自由組合門電路
    發(fā)表于 04-09 09:46

    fpga芯片系列介紹

    FPGA芯片系列眾多,不同廠商會(huì)推出各具特色的產(chǎn)品系列以滿足不同的應(yīng)用需求。以下是一些主要的FPGA芯片系列
    的頭像 發(fā)表于 03-14 16:15 ?1094次閱讀

    fpga學(xué)習(xí)需要具備哪些課程

    FPGA(Field Programmable Gate Array)學(xué)習(xí)需要具備一系列的課程知識(shí)和實(shí)踐技能
    的頭像 發(fā)表于 03-14 15:51 ?1050次閱讀

    學(xué)習(xí)FPGA必須知道的社區(qū)

    學(xué)習(xí)FPGA必須知道的社區(qū)
    的頭像 發(fā)表于 01-03 17:51 ?329次閱讀
    <b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>FPGA</b>必須知道的社區(qū)

    oracle case when 語法介紹

    ... ELSE resultN END 其中,CASE是關(guān)鍵字,condition是一個(gè)邏輯條件,result是一個(gè)表達(dá)式或值。 整個(gè)CASE WHEN語句可以包括多個(gè)WHEN子句,每個(gè)WHEN子句都可以帶有一個(gè)條件和一個(gè)結(jié)
    的頭像 發(fā)表于 12-06 10:21 ?1539次閱讀

    java中的switch語句 case的取值

    Java中的switch語句是一種用于多重條件判斷的語句,用于根據(jù)不同的條件執(zhí)行不同的代碼塊。在switch語句中,case關(guān)鍵字用來指定不同的取值。 在Java中,switch語句的語法結(jié)構(gòu)如下
    的頭像 發(fā)表于 11-30 16:05 ?918次閱讀

    java switch case的語法規(guī)則

    在Java中,switch case語句是一種用于多分支選擇的控制流語句。它允許根據(jù)某個(gè)表達(dá)式的值來執(zhí)行不同的代碼塊。下面是關(guān)于switch case語法規(guī)則的詳細(xì)解釋。 基本語法 switch語句
    的頭像 發(fā)表于 11-30 14:40 ?1789次閱讀

    case后邊可以跟多個(gè)語句嗎

    是的,"case" 后面可以跟多個(gè)語句。在編程語言中,"case" 通常被用于 switch 語句中,用于檢查一個(gè)變量或表達(dá)式是否匹配某個(gè)特定的值。當(dāng)匹配成功時(shí),可以執(zhí)行一個(gè)或多個(gè)語句。 下面是一個(gè)
    的頭像 發(fā)表于 11-30 14:19 ?5676次閱讀

    Verilog代碼:if-elsecase的電路結(jié)構(gòu)和區(qū)別

    每個(gè)if-else就是一個(gè)2選1mux器。當(dāng)信號(hào)有明顯優(yōu)先級(jí)時(shí),首先要考慮if-else,但是if嵌套過多也會(huì)導(dǎo)致速度變慢;if語句結(jié)構(gòu)較慢,但占用面積小。 嵌套的if語句如果使用不當(dāng),就會(huì)
    的頭像 發(fā)表于 11-29 15:10 ?2481次閱讀

    Switch case中的case順序

    Switch case中的case順序 Switch 可能轉(zhuǎn)化成多種不同算法的代碼。其中最常見的是跳轉(zhuǎn)表和比較鏈/樹。當(dāng)switch用比較鏈的方式轉(zhuǎn)化時(shí),編譯器會(huì)產(chǎn)生if-else-if的嵌套代碼
    的頭像 發(fā)表于 11-20 18:16 ?726次閱讀

    嵌入式軟件架構(gòu)表驅(qū)動(dòng)方法介紹

    表驅(qū)動(dòng)方法是一種使你可以在表中查找信息,而不必用邏輯語句(if-else或switch-case)來把他們找出來的方法。事實(shí)上,任何信息都可以通過表來挑選。在簡(jiǎn)單的情況下,邏輯語句往往更簡(jiǎn)單而且更直接。
    發(fā)表于 11-17 09:21 ?416次閱讀

    javascript開關(guān)作用

    JavaScript開關(guān)的作用主要是控制代碼的執(zhí)行。在JavaScript中,可以使用開關(guān)(switch)語句來檢查某個(gè)變量的值,并根據(jù)不同的值執(zhí)行不同的操作。開關(guān)語句通常用于替代if-else語句
    的頭像 發(fā)表于 11-16 10:22 ?328次閱讀

    如何學(xué)習(xí)FPGA?FPGA學(xué)習(xí)必備的基礎(chǔ)知識(shí)

    FPGA已成為現(xiàn)今的技術(shù)熱點(diǎn)之一,無論學(xué)生還是工程師都希望跨進(jìn)FPGA的大門。網(wǎng)絡(luò)上各種開發(fā)板、培訓(xùn)班更是多如牛毛,仿佛在告訴你不懂FPGA你就OUT啦。那么我們要玩轉(zhuǎn)FPGA必須具備
    的頭像 發(fā)表于 10-27 17:43 ?736次閱讀