《電子技術(shù)應用》
您所在的位置:首頁 > 模擬設(shè)計 > 業(yè)界動態(tài) > Verilog語言中case、casex、casez的用法和區(qū)別

Verilog語言中case、casex、casez的用法和區(qū)別

2022-10-01
來源:FPGA設(shè)計論壇
關(guān)鍵詞: Verilog case casex

  Verilog語言中casecasex、casez的用法和區(qū)別

  casez與casex語句是case語句的兩種變體, 在寫testbench時用到。

  一、case、casex、casez的區(qū)別

  下表給出case、casex、casez的真值表:

  1.png

  在case語句中,敏感表達式中與各項值之間的比較是一種全等比較,每一位都相同才認為匹配。

  在casez語句中,如果分支表達式某些位的值為高阻z,那么對這些位的比較就會忽略,不予考慮,而只關(guān)注其他位的比較結(jié)果。

  在casex語句中,則把這種處理方式進一步擴展到對x的處理,即如果比較雙方有一方的某些位的值是z或x,那么這些位的比較就不予考慮。

  二、case/casez/casex 在simulation/synthesis的區(qū)別

  有的網(wǎng)上說casex和casez屬于不可綜合語句,這是針對一般電路不會出現(xiàn)x狀態(tài)來說的,但是綜合工具并不會對x,z認識這個狀態(tài),所以綜合出來的電路是一樣的。

  使用過程中許需要注意的問題:

  1)一般經(jīng)常使用到的是casez語句,最好少用casex

  2)case/casez/casex其實都是可綜合的

  3)在電路中,可以用?來表示無關(guān)值的z

  4)case的描述,匹配都是從上到下進行的

  仿真的不同

  1)對于case

  case (sel)

  2'b00:      y = a;

  2'b01:      y = b;

  2'bx0:      y = c;

  2'b1x:      y = d;

  2'bz0:      y = e;

  2'b1?:      y = f;

  default :   y = g;

  endcase

  對于case來說,每一種情況都會識別(1/0/z/x)

  當sel的狀態(tài)是一下情況時,會出現(xiàn)以下結(jié)果

  2.png

  2)對于casez

  casez (sel)

  2'b00:      y = a;

  2'b01:      y = b;

  2'bx0:      y = c;

  2'b1x:      y = d;

  2'bz0:      y = e;

  2'b1?:      y = f;

  default:    y = g;

  endcase

  首先,case的描述,匹配都是從上到下進行的,如果使用了casez,看上面的casez的列表,只要輸入有z/?的話,就能和任意匹配。

  3.png

  3)對于casex

  casex (sel)

  2'b00   :   y = a;

  2'b01   :   y = b;

  2'bx0   :   y = c;

  2'b1x   :   y = d;

  2'bz0   :   y = e;

  2'b1?   :   y = f;

  default :   y = g;

  endcase

  casex也是從上到下匹配,當出現(xiàn)x/z/?的輸入的時候,都不會care,只管不是大大情況來匹配

  4.png

  綜合的不同

  綜合的時候,因為綜合工具其實都不會管你什么x/z/?,對于綜合工具來說是一樣的,所以case/casez/casex不同寫法的綜合結(jié)果,例子都是同樣的。

  例一:

  case (sel)

  2'b00   :   mux_out = mux_in[0];

  2'b01   :   mux_out = mux_in[1];

  2'b1?   :   mux_out = mux_in[2];

  default :   mux_out = mux_in[3];

  endcase

  例二:

  case (sel)

  2'b00   :   mux_out = mux_in[0];

  2'b01   :   mux_out = mux_in[1];

  2'b1x   :   mux_out = mux_in[2];

  default :   mux_out = mux_in[3];

  endcase

  這倆個例子的結(jié)果是一樣的。

  case(不是casez/casex的時候)的列表里面的x和z,都被綜合工具認為是不可達到的狀態(tài)就被去掉了。casez和casex里面的x/z都被認為是don’t care。

  對于綜合、仿真的結(jié)果

  1)在實際寫代碼的時候,如果使用case的時候,盡量不要用x/z/?,綜合工具也會不care

  2)casez和casex綜合的結(jié)果是一致的。

  3)casez稍好用一些,因為它可以用來代表don’t care的值

  4)最重要的一點就是,casez和casex其實沒有孰優(yōu)孰劣

  5)casez語句用來處理不考慮高阻值z的比較過程,casex語句則將高阻值z和不定值都視為不必關(guān)心的情況。所謂不必關(guān)心的情況,即在表達式進行比較時,不將該位的狀態(tài)考慮在內(nèi)。這樣在case語句表達式進行比較時,就可以靈活地設(shè)置以對信號的某些位進行比較。




更多信息可以來這里獲取==>>電子技術(shù)應用-AET<<

圖片.jpg

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 拔播拔播华人永久免费| 欧美老妇bbbwwbbww| 国产欧美亚洲精品a第一页| 一区二区三区福利| 日韩免费高清专区| 亚洲最大在线视频| 精品人妻少妇一区二区| 国产性夜夜夜春夜夜爽| 91精品国产三级在线观看| 成人伊人青草久久综合网破解版| 九九全国免费视频| 欧美高清在线精品一区| 免费观看黄网站| 蜜芽.768.忘忧草二区老狼| 国产精品亚洲四区在线观看| a级毛片无码免费真人| 摸BBB揉BBB揉BBB视频 | 1313苦瓜网在线播| 女人让男人免费桶爽30分钟| 久久99久久99精品免观看| 最新国语自产精品视频在| 亚洲欧美日韩国产成人| 窝窝社区在线观看www| 国产caowo13在线观看一女4男 | 亚洲色成人网一二三区| 美女久久久久久久久久久| 国产在线观看中文字幕| 香蕉国产人午夜视频在线| 在线观看污污网站| 一本一本久久a久久精品综合麻豆| 日本动漫丝袜腿交榨精漫画 | 青娱极品盛宴国产一区| 国产精品一区久久| 91九色视频在线观看| 天天影视综合网| 一本一本久久a久久综合精品蜜桃| 手机在线视频你懂的| 久久亚洲国产精品| 最新亚洲春色av无码专区| 亚洲成Aⅴ人片久青草影院| 波多野结衣在公众被强|