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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

考慮x和z在verilog條件語句中的使用情況

全棧芯片工程師 ? 來源:全棧芯片工程師 ? 2023-11-02 09:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

首先,考慮x和z在verilog條件語句中的使用情況,然后我們再考慮在verilog中用x和z給其他reg/wire賦值的情況。

(一)首先,考慮x和z在verilog條件語句中的使用情況。


Verilogcase語句中,2'b1x和2’b0x造成的仿真器、綜合器的mismatch,

舉個例子:

Simulators:

match2'b1xto11or10

match2’b0xto01or00

HDLCompilertool

both2'b1xand2’b0xareevaluatedtofalse. Becauseofthesimulationandsynthesismismatches,theHDLCompilertoolissuesanELAB-310warning.

case(A)
2'b1x:...//Youwant2'b1xtomatch11and10but
//HDLCompileralwaysevaluatesthiscomparisontofalse
2'b0x:...//youwant2'b0xtomatch00and01but
//HDLCompileralwaysevaluatesthiscomparisontofalse
default:...
endcase

官方說明:我們可以得到兩點信息:

98dd139e-78c9-11ee-939d-92fbcf53809c.png



第一點:


Asimulatorevaluatesanunknown(x)orhighimpedance(z)asadistinctvaluedifferentfrom0or1;however,anxorzvaluebecomesa0or1duringsynthesis.



第二點:



DC工具會直接將verilog比較判斷語句中的xorz直接理解為false。所以禁止在verilog比較判斷語句中使用xorz。


參見如下代碼,DC工具會理解if(A==1'bx)為false,因此DC會直接assigns1toregB并且報ELAB-310warning.

moduletest(
inputA,
outputregB
);
always@(*)begin
if(A==1'bx)
B=0;
else
B=1;
end
endmodule



實際綜合如下,果不其然,有意思哇!后面幾個稍微復雜點的代碼更有趣!

99049b62-78c9-11ee-939d-92fbcf53809c.png




再補充z的使用:

990c9556-78c9-11ee-939d-92fbcf53809c.png

結論:仿真工具可以理解x、z、0、1狀態,但是綜合工具遇到帶x、z的比較判斷條件時,直接理解該條件為false。



(二)然后我們再考慮在verilog中用x和z給其他reg/wire賦值的情況。




案例1:z賦值是沒問題的,會綜合出來三態門,參見如下代碼1:

modulethree_state(ENABLE,IN1,OUT1);
inputIN1,ENABLE;
outputregOUT1;


always@(ENABLEorIN1)begin
if(ENABLE)
OUT1=IN1;
else
OUT1=1'bz;//assignshigh-impedancestate
end
endmodule

99341a40-78c9-11ee-939d-92fbcf53809c.png

994c588a-78c9-11ee-939d-92fbcf53809c.png

Logicalbufferofasingleinputwithanactive-highoutputenable.Theoutputis3-statedwhentheenableislow.




真值表:

9959323a-78c9-11ee-939d-92fbcf53809c.png



案例2:z賦值是沒問題的,會綜合出來三態門,參見如下代碼2:

modulex_state(IN1,OUT1);
input[1:0]IN1;
outputreg[1:0]OUT1;


always@(*)begin
case(IN1)
2'b00:OUT1=2'b00;
2'b01:OUT1=2'b01;
2'b10:OUT1=2'b10;
default:OUT1=2'bzz;//assignshigh-impedancestate
endcase
end
endmodule

995e6890-78c9-11ee-939d-92fbcf53809c.png

9971e6c2-78c9-11ee-939d-92fbcf53809c.png




再看X賦值是什么情況。


案例1:利用DC綜合工具實測如下代碼綜合效果:

modulex_state(IN1,OUT1);
input[1:0]IN1;
outputreg[1:0]OUT1;


always@(*)begin
case(IN1)
2'b00:OUT1=2'b01;
2'b11:OUT1=2'b00;
default:OUT1=2'bxx;
endcase
end
endmodule

997c693a-78c9-11ee-939d-92fbcf53809c.png

可見,x賦值直接被DC工具省略,也沒有latch出現。

案例2:

modulex_state(IN1,OUT1);
input[1:0]IN1;
outputreg[1:0]OUT1;


always@(*)begin
case(IN1)
2'b00:OUT1=2'b00;
2'b01:OUT1=2'b01;
2'b10:OUT1=2'b10;
default:OUT1=2'bxx;//assignshigh-impedancestate
endcase
end
endmodule

999f6e08-78c9-11ee-939d-92fbcf53809c.png

可見,x賦值直接被DC工具省略,也沒有latch出現。

案例3:注釋掉default,非full_case,必然出現latch!

modulex_state(IN1,OUT1);
input[1:0]IN1;
outputreg[1:0]OUT1;


always@(*)begin
case(IN1)
2'b00:OUT1=2'b00;
2'b01:OUT1=2'b01;
2'b10:OUT1=2'b10;
endcase
end
endmodule

99a42da8-78c9-11ee-939d-92fbcf53809c.png

因此,盡管x賦值直接被DC工具省略,也沒有latch出現,但是仍然建議不要使用x賦值,除非full_case情況下,不會執行default條件下的x賦值分支,寫x賦值可以用于仿真查看波形,如下代碼所示:

always@(*)begin
case(pmu_state)
//Duringpowerdownsequence,shiftingpatterntoactive
//ISOLATE->RETAIN->PWRDOWN
//andstayunchangeduringpowereddownstate
`ARM_POWERING_DOWN,`ARM_POWERED_DOWN:begin
nxt_isolate_n=1'b0;
nxt_retain_n=ISOLATEn;
nxt_pwrdown=~RETAINn;
end


//Duringpowerupsequence,shiftingpatterntoactive
//PWRDOWN->RETAIN->ISOLATE
`ARM_POWERING_UP,`ARM_POWERED_UP:begin
nxt_pwrdown=1'b0;
nxt_retain_n=~PWRDOWN;
nxt_isolate_n=RETAINn;
end


//PropagateX
default:begin
nxt_isolate_n=1'bX;
nxt_retain_n=1'bX;
nxt_pwrdown=1'bX;
end
endcase
end

審核編輯:湯梓紅

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

    關注

    14

    文章

    1036

    瀏覽量

    85311
  • Verilog
    +關注

    關注

    29

    文章

    1367

    瀏覽量

    112185
  • HDL
    HDL
    +關注

    關注

    8

    文章

    330

    瀏覽量

    48003
  • 代碼
    +關注

    關注

    30

    文章

    4898

    瀏覽量

    70582
  • 綜合器
    +關注

    關注

    0

    文章

    12

    瀏覽量

    6590

原文標題:Verilog中,2'b1x和2’b0x造成的仿真器、綜合器的mismatch?!

文章出處:【微信號:全棧芯片工程師,微信公眾號:全棧芯片工程師】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    CUBEIDE運行完可以看RAM的使用情況,運行中可以實時查看RAM的使用情況嗎?

    CUBEIDE運行完可以看RAM的使用情況,運行中可以實時查看RAM的使用情況嗎?以及負載情況? 圖片是運行完可以看RAM使用情況,是否可以運行中實時查看?是不是cubemonito
    發表于 03-12 07:56

    如何查看RAM使用情況

    嗨, 我正在使用STM32L053 Nucleo,我已經為它運行了一些代碼,我希望做一個RAM估計來查看當前固件的RAM使用情況。如何查看RAM使用情況? 問候#記憶
    發表于 08-05 10:08

    Android應用的內存使用情況檢查方法

    如何檢查 Android 應用的內存使用情況
    發表于 03-30 13:36

    電池使用情況統計信息

    電池使用情況信息根據電池使用情況統計信息和電源配置文件中的值計算得出。電池使用情況統計信息框架可通過跟蹤設備組件不同狀態下維持的時間來自動確定電池
    發表于 12-31 07:01

    如何檢查imx6中的GPU使用情況

    板上運行 Qt6 應用程序,想觀察該 Qt6 應用程序對 GPU 的使用情況。 如何檢查應用程序的 GPU 使用情況或該應用程序是否真的使用 GPU?我們可以查看和確認該
    發表于 05-22 07:04

    SoC如何查看內存使用情況

    查看系統內存: free -h 查看ION內存 NPU內存使用情況: cat /sys/kernel/debug/ion/bm_npu_heap_dump/summary | head -2VPU
    發表于 09-19 07:23

    主流GPS芯片使用情況

    主流GPS芯片使用情況
    發表于 11-27 14:34 ?13次下載

    Linux系統下使用top命令查看CPU使用情況

    Linux系統下,使用top命令查看CPU使用情況
    發表于 07-10 11:46 ?4691次閱讀
    <b class='flag-5'>在</b>Linux系統下使用top命令查看CPU<b class='flag-5'>使用情況</b>

    STM32/KEIL/MDK 查看 FLASH 和 RAM 使用情況

    STM32/KEIL/MDK 查看 FLASH 和 RAM 使用情況
    發表于 12-02 09:06 ?13次下載
    STM32/KEIL/MDK 查看 FLASH 和 RAM <b class='flag-5'>使用情況</b>

    SAS運算符in語句中的應用

    前面通過對SAS Base的學習,我想大家對in運算符并不陌生,它廣泛的應用于數據步或SQL條件語句中,進行條件判斷或數據篩選,進而訪問特定觀測值。
    的頭像 發表于 05-19 14:38 ?2780次閱讀
    SAS運算符in<b class='flag-5'>在</b>宏<b class='flag-5'>語句中</b>的應用

    LPC86x上的開關矩陣使用情況

    電子發燒友網站提供《LPC86x上的開關矩陣使用情況.pdf》資料免費下載
    發表于 08-17 10:48 ?0次下載
    LPC86<b class='flag-5'>x</b>上的開關矩陣<b class='flag-5'>使用情況</b>

    LPC86x ACMP使用情況

    電子發燒友網站提供《LPC86x ACMP使用情況.pdf》資料免費下載
    發表于 08-17 10:34 ?0次下載
    LPC86<b class='flag-5'>x</b> ACMP<b class='flag-5'>使用情況</b>

    LPC86x ADC使用情況

    電子發燒友網站提供《LPC86x ADC使用情況.pdf》資料免費下載
    發表于 08-16 10:42 ?0次下載
    LPC86<b class='flag-5'>x</b> ADC<b class='flag-5'>使用情況</b>

    python if語句多個條件怎么用

    Python中,可以使用多個條件來編寫if語句。這些條件可以使用邏輯運算符進行組合,包括and、or和not。 當if語句中有多個
    的頭像 發表于 11-21 16:45 ?3967次閱讀

    TMS320C64x高性能DSP應用中的高速緩存使用情況

    電子發燒友網站提供《TMS320C64x高性能DSP應用中的高速緩存使用情況.pdf》資料免費下載
    發表于 10-21 09:43 ?0次下載
    TMS320C64<b class='flag-5'>x</b><b class='flag-5'>在</b>高性能DSP應用中的高速緩存<b class='flag-5'>使用情況</b>
    主站蜘蛛池模板: 精品国产成a人在线观看 | 中文字幕一区中文亚洲 | 为什么丈夫插我我却喜欢被打着插 | 亚洲一区乱码电影在线 | 日韩高清特级特黄毛片 | 天天爽夜夜爽8888视频精品 | 卫生间被教官做好爽HH视频 | 超碰免费视频公开97 | 日本亚洲电影 | 青青视频国产依人在线 | 麻豆一区二区三区蜜桃免费 | 亚洲AV中文字幕无码久久 | 在线中文高清资源免费观看 | 内射人妻无码色AV麻豆去百度搜 | 欧美日韩国产码在线 | AV72啪啪网站 | 蜜桃久久久亚洲精品成人 | 成人毛片在线播放 | 国产色精品久久人妻99蜜桃麻豆 | 99久久做夜夜爱天天做精品 | 沈芯语麻豆0076 视频 | 午夜精品久久久久久久爽牛战 | 99久久久免费精品国产 | 野花日本完整版在线观看免费高清 | 亚洲成AV人片一区二区不卡 | 国产呦精品一区二区三区网站 | 亚洲无码小格式 | 草民电影网午夜伦理电影网 | 老头操美女 | 亚洲三级成人 | 日本国产精品无码一区免费看 | 俄罗斯兽交XXXXX在线 | 成人在线免费视频播放 | 色中色辩论区 | 日本在线免费播放 | 人妻天天爽夜夜爽三区麻豆A片 | 京香在线观看 | 亚洲精品免费观看 | 欧美成人中文字幕在线视频 | 成人在线视频免费观看 | 亚洲成人在线免费 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品