色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

verilog語法說明之case casez case

sanyue7758 ? 來源: IC的世界 ? 2023-09-20 09:42 ? 次閱讀

1、語法說明

在rtl仿真中,有四種狀態,分別是0、1、x(unknown values)和z(high-impedance values)。

case 結構體中:0,1,X與Z是四種不同的狀態,case條件比較時會檢測比較雙方每個bit是否完全相等。

casez 結構體中:把Z當做don’t care conditions,case條件比較時,比較雙方存在Z值的bit位不參與比較 ,其他比特位相等則視為條件命中

casex 結構體中:把Z和X當做don’t care conditions,case條件比較時,比較雙方存在Z或者X的bit位不參與比較,其他比特位相等則視為條件命中

在SystemVerilog和Verilog中,

case、casex、casez都是可綜合的

在casex、casez中推薦使用 ?來替換Z和X

case、casex、casez語句中,如果命中多個case條件,則執行命中的第一個case

2、案例解析

always@(*)
    begin
        case(sel[1:0])
        2'b00: data1 = 3'd0 ;
        2'b01: data1 = 3'd1 ;
        2'b10: data1 = 3'd2 ;
        2'b11: data1 = 3'd3 ;
        2'b1z: data1 = 3'd4 ;
        2'b1x: data1 = 3'd5 ;
        default: data1 = 3'd7 ;
        endcase
    end
    
always@(*)
    begin
        casez(sel[1:0])
        2'b00: data2 = 3'd0 ;
        2'b01: data2 = 3'd1 ;
        2'b10: data2 = 3'd2 ;
        2'b11: data2 = 3'd3 ;
        2'b1z: data2 = 3'd4 ;
        2'b1x: data2 = 3'd5 ;
        default: data2 = 3'd7 ;
        endcase
    end




always@(*)
    begin
        casex(sel[1:0])
        2'b00: data3 = 3'd0 ;
        2'b01: data3 = 3'd1 ;
        2'b10: data3 = 3'd2 ;
        2'b11: data3 = 3'd3 ;
        2'b1z: data3 = 3'd4 ;
        2'b1x: data3 = 3'd5 ;
        default: data3 = 3'd7 ;
        endcase
    end




    


always@(*)
    begin
        casez(sel[1:0])
        2'b00: data4 = 3'd0 ;
        2'b01: data4 = 3'd1 ;
        2'b10: data4 = 3'd2 ;
        2'b11: data4 = 3'd3 ;
        2'b1?: data4 = 3'd4 ;
        2'b1x: data4 = 3'd5 ;
        default: data4 = 3'd7 ;
        endcase
    end




always@(*)
    begin
        casex(sel[1:0])
        2'b00: data5 = 3'd0 ;
        2'b01: data5 = 3'd1 ;
        2'b10: data5 = 3'd2 ;
        2'b11: data5 = 3'd3 ;
        2'b1?: data5 = 3'd4 ;
        2'b1x: data5 = 3'd5 ;
        default: data5 = 3'd7 ;
        endcase
    end
case語句中4種狀態都會比較匹配

sel[1:0]為1’b1z時,命中了[2'b1z: data2 = 3'd4 ;],data1被賦值3’d4

sel[1:0]為1’b1x時,命中了[2'b1x: data2 = 3'd5 ;],data1被賦值3’d5

casez語句中Z狀態會被忽略,不做比較,X依舊進行比較
sel[1:0]為1’b1z時,實際僅比較sel[1],命中了[2'b10: data2 = 3'd2 ;]和[2'b1z: data2 = 3'd4; ],根據優先級原則, data2被賦值3’d2

sel[1:0]為1’b1x時,依舊比較sel[1:0],命中了[2'b1x: data2 = 3'd5 ;], data2被賦值3’d5

casex語句中Z和X狀態會被忽略,不做比較

sel[1:0]為1’b1z時,實際僅比較sel[1],命中了[2'b10: data2 = 3'd2 ;], data3被賦值3’d2

sel[1:0]為1’b1x時,實際僅比較sel[1],命中了[2'b10: data2 = 3'd2 ;], data3被賦值3’d2

casez語句中采用?替換Z狀態

sel[1:0]為1’b1z時,實際僅比較sel[1],命中了[2'b10: data2 = 3'd2 ;], data4被賦值3’d2

sel[1:0]為1’b1x時,同時命中了[2'b1?: data4 = 3'd4 ;]和[2'b1x: data4 = 3'd5 ;],根據優先級原則,data4被賦值3’d4

casex語句中采用?替換Z狀態

sel[1:0]為1’b1z時,實際僅比較sel[1],命中了[2'b10: data2 = 3'd2 ;]、[2'b1?: data5 = 3'd4 ;]、[2'b1x: data5 = 3'd5 ;],根據優先級原則,data5被賦值3’d2

sel[1:0]為1’b1x時,實際僅比較sel[1],命中了[2'b10: data2 = 3'd2 ;]、[2'b1?: data5 = 3'd4 ;]、[2'b1x: data5 = 3'd5 ;],根據優先級原則,data5被賦值3’d2

0727b422-56e6-11ee-939d-92fbcf53809c.png


3、Do-not-care values 參考說明


SystemVerilog(IEEE Std 1800-2017)和verilog(IEEE P1364-2005)標準關于casez、casex的描述是一致的:截圖如下:

07437068-56e6-11ee-939d-92fbcf53809c.png

0757441c-56e6-11ee-939d-92fbcf53809c.png   


審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 仿真
    +關注

    關注

    50

    文章

    4124

    瀏覽量

    133874
  • Verilog
    +關注

    關注

    28

    文章

    1351

    瀏覽量

    110267
  • RTL
    RTL
    +關注

    關注

    1

    文章

    385

    瀏覽量

    59912
  • 語法
    +關注

    關注

    0

    文章

    44

    瀏覽量

    9850
  • 結構體
    +關注

    關注

    1

    文章

    130

    瀏覽量

    10867

原文標題:verilog語法-淺談case casez casex

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    零基礎學FPGA(四)Verilog語法基基礎基礎(中)

    表達式位寬必須相等,例如上圖都是16位整型,如果不加以說明,系統會以默認值32位控制表達式位寬。下面是casecasezcase語句的真值表這個表其實還是很好記的
    發表于 04-07 17:43

    新人求教關于case語法問題:case里2個端口是什么意思?

    四選一多路選擇器其中一部分case ({S1, S0})2'b00: out=io;2'b01: out=i1;2'b10: out=i2;2'b11: out=i3;case里2個端口是什么意思? 是s1=s0=2'b00嗎?謝謝!
    發表于 09-18 12:07

    在SpinalHDL中關于casez的使用

    為:沒什么大的問題。但我們知道,在Verilog中,存在casecasez,casex三種語法(本篇不做三種語法的區分與討論,對此感興趣的
    發表于 07-06 10:59

    verilog中if與case語句不完整產生鎖存器的原因分析

      在很多地方都能看到,verilog中if與case語句必須完整,即if要加上else,case后要加上default語句,以防止鎖存器的發生,下載內容中就談到了其中原因。
    發表于 09-16 09:29 ?24次下載

    關于verilog的學習經驗簡單分享

    學習verilog最重要的不是語法,“因為10%的語法就能完成90%的工作”,verilog語言常用語言就是always@(),if~else,ca
    發表于 03-26 14:06 ?2912次閱讀
    關于<b class='flag-5'>verilog</b>的學習經驗簡單分享

    FPGA代碼經驗 casecasez,casex語句

    使用case語句代替嵌套的if-else將會產生更易讀的代碼,更好的邏輯利用率和更高的性能。
    的頭像 發表于 12-11 10:42 ?6321次閱讀

    Verilog語法進階

    Verilog語法進階說明
    發表于 05-06 16:14 ?30次下載

    一文淺析case、casex、casez區別

    先,case的描述,匹配都是從上到下進行的,如果使用了casez,看上面的casez的列表,只要輸入有z/?的話,就能和任意匹配。
    發表于 09-30 14:56 ?3868次閱讀

    Verilog語法generate for、generate if、generate case

    Verilog-2005中有3個generate 語句可以用來很方便地實現重復賦值和例化(generate for)或根據條件選擇性地進行編譯(generate if和generate case)等功能。接下來就一起看下這3個語句的應用場景和應用方法吧。
    的頭像 發表于 12-28 15:21 ?2867次閱讀

    Verilog中的If語句和case語句介紹

    。這些語句統稱為順序語句。case 語句和 if 語句都是 verilog 中順序語句的示例。在這篇文章的其余部分,我們將討論如何在verilog中使用這兩個語句。然后,我們考慮這兩個結構的簡短示例,以
    的頭像 發表于 05-11 15:37 ?4714次閱讀
    <b class='flag-5'>Verilog</b>中的If語句和<b class='flag-5'>case</b>語句介紹

    CASE:創建多路分支

    CASE:創建多路分支 說明 使用“創建多路分支”指令,可以根據表達式的值執行多個指令序列中的一個。 表達式的值必須為整數或位字符串。執行 CASE 指令時,會將表達式(變量)的值與多個常數的值進行
    的頭像 發表于 06-27 11:46 ?924次閱讀
    <b class='flag-5'>CASE</b>:創建多路分支

    Switch case中的case順序

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

    java switch case語法規則

    在Java中,switch case語句是一種用于多分支選擇的控制流語句。它允許根據某個表達式的值來執行不同的代碼塊。下面是關于switch case語法規則的詳細解釋。 基本語法 s
    的頭像 發表于 11-30 14:40 ?2470次閱讀

    java中的switch語句 case的取值

    Java中的switch語句是一種用于多重條件判斷的語句,用于根據不同的條件執行不同的代碼塊。在switch語句中,case關鍵字用來指定不同的取值。 在Java中,switch語句的語法結構如下
    的頭像 發表于 11-30 16:05 ?1232次閱讀

    oracle case when 語法介紹

    Oracle的CASE WHEN語法是一種在數據庫查詢中使用的條件語句,它提供了一種在SELECT語句中根據條件對結果進行轉換或篩選的方法。在本文中,我們將詳細介紹Oracle的CASE WHEN
    的頭像 發表于 12-06 10:21 ?1910次閱讀
    主站蜘蛛池模板: 男插女高潮一区二区 | 熟妇少妇任你躁在线无码 | 99re这里只有精品视频 | 2019午夜75福利不卡片在线 | 久久人妻无码毛片A片麻豆 久久人妻熟女中文字幕AV蜜芽 | 玩两个少妇女邻居 | 无限资源在线观看播放 | 欧洲美女人 一级毛片 | 人妻无码AV中文系统久久免费 | 亚洲色婷婷久久精品AV蜜桃久久 | 无码人妻视频又大又粗欧美 | 日韩特黄特色大片免费视频 | 国产激情视频在线 | 久久精品亚洲热综合一本 | 久久伊人在 | 草莓视频cm.888tw | 亚洲高清在线视频 | 免费小视频在线观看 | 扒开腿狂躁女人GIF动态图 | 久久精品国产96精品亚洲 | 刺激一区仑乱 | 久久国产一区二区三区 | 欧美阿v在线免播播放 | 国产免费麻传媒精品国产AV | 国产品无码一区二区三区在线 | 无限资源日本2019版 | 国产在线精品视亚洲不卡 | 国产69精品9999XXXX | 看电影来5566一区.二区 | 亚洲一级特黄 | 国产一区二区在线观看免费 | 国产福利视频第一导航 | 在线免费中文字幕 | 国产AV麻豆出品在线播放 | 国产亚洲精品久久无亚洲 | xx69中国| 狠狠干狠狠色 | 亚洲国产成人在线视频 | 亚洲日韩在线观看 | 白丝女仆被强扒内裤 | 狂野猛交xxxx吃奶 |