一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

assign和signed的聯(lián)合背刺事件

冬至子 ? 來(lái)源:芯時(shí)代青年 ? 作者:尼德蘭的喵 ? 2023-12-04 11:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

沒(méi)想到啊沒(méi)想到啊,有一天會(huì)被濃眉大眼的assign背刺!想當(dāng)年在always消失術(shù)里,在X態(tài)分析里,在xprop平替策略里,把a(bǔ)ssign捧的這么高,優(yōu)點(diǎn)說(shuō)了800多項(xiàng),然后今天一仿真出bug了?!

還有有符號(hào)數(shù)和無(wú)符號(hào)數(shù),我都吹出去了已經(jīng)大成大成了,這還能出錯(cuò)?!

萬(wàn)事皆有可能,于是就出現(xiàn)了這個(gè)事。

事情的根源簡(jiǎn)化完就是下面這個(gè)語(yǔ)法,當(dāng)sel為0時(shí)輸出i_a高位補(bǔ)零的右移結(jié)果(相當(dāng)于視i_a為無(wú)符號(hào)數(shù)),sel為1時(shí)輸出i_a高位補(bǔ)符號(hào)位的輸出結(jié)果相當(dāng)于視i_a為有符號(hào)數(shù)):

//test
wire [31:0]i_a = 32'hff00_0000;
wire       sel = 1'b1;


wire [31:0]en0     = (sel == 1'b0) ? i_a > >> 8 : 
                                     $signed(i_a) > >> 8;

wire [31:0]en1_mid = $signed(i_a) > >> 8;
wire [31:0]en1     = (sel == 1'b0) ? i_a > >> 8 : en1_mid;

好,大家先看著這en0和en1的值。

en0和en1的值分別是啥呢?

圖片

en0 = 32'h00ff_0000;

en1 = 32'hffff_0000;

問(wèn)題出在哪呢?前面咱們總結(jié)過(guò):有符號(hào)數(shù)和無(wú)符號(hào)數(shù)運(yùn)算,結(jié)果為無(wú)符號(hào)數(shù)。這句話不太嚴(yán)謹(jǐn),應(yīng)該完善為:有符號(hào)數(shù)和無(wú)符號(hào)數(shù)運(yùn)算,所有的運(yùn)算數(shù)會(huì)被視為無(wú)符號(hào)數(shù),結(jié)果為無(wú)符號(hào)數(shù)。

因?yàn)閑n0運(yùn)算公式中,有符號(hào)數(shù)和無(wú)符號(hào)數(shù)混合運(yùn)算了,有符號(hào)數(shù)和無(wú)符號(hào)數(shù)混合時(shí)會(huì)自動(dòng)將所有的變量視為無(wú)符號(hào)數(shù)進(jìn)行運(yùn)算,而這個(gè)混合運(yùn)算很難發(fā)現(xiàn):

wire [31:0]en0     = (sel == 1'b0) ? i_a > >> 8 : $signed(i_a) > >> 8;

對(duì),i_a >>> 8是個(gè)無(wú)符號(hào)數(shù)的運(yùn)算!/(ㄒoㄒ)/~~所以帶著signed(i_a) >>> 8也變成了無(wú)符號(hào)數(shù)的運(yùn)算。所以說(shuō)如果把signed(i_a) >>> 8單提出來(lái)先算好,再參與選擇邏輯就是預(yù)期的結(jié)果了。

那么最后一個(gè)小問(wèn)題,選擇邏輯參與不參與這個(gè)有符號(hào)數(shù)和無(wú)符號(hào)數(shù)的爭(zhēng)端呢?不參與,比如代碼改成這樣:

wire [31:0]en0     = (sel == 1'b0) ? $signed(i_a > >> 8) : $signed(i_a) > >> 8;

我把前面的運(yùn)算結(jié)果通過(guò)$signed擴(kuò)了一下,然后再仿真:

圖片

這說(shuō)明了兩個(gè)問(wèn)題:

1.選擇邏輯沒(méi)有參與到有符號(hào)數(shù)和無(wú)符號(hào)數(shù)的判定中;

2.判定時(shí)signed(i_a) >>> 8,看的是同一級(jí)別的其他運(yùn)算項(xiàng)的符號(hào)屬性,比如此時(shí)他看的是signed(...);

再改一下就又回去了:

wire [31:0]en0     = (sel == 1'b0) ? $signed(i_a > >> 8) + 1'b1 : $signed(i_a) > >> 8;

圖片

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

    關(guān)注

    14

    文章

    1037

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ALLEGRO畫(huà)銅皮時(shí)可否自動(dòng)ASSIGN NET

    在ALLEGRO中畫(huà)SHAPE時(shí)需要再ASSIGN給它NET,這樣感覺(jué)不太方便,而且ASSIGN NET需要在右鍵選項(xiàng)很下面,感覺(jué)效率很低。不知ALLEGRO中可否做到象PROTEL 那樣,畫(huà)銅皮到器件上時(shí),能自動(dòng)附上網(wǎng)絡(luò)屬性呢?這樣我就可以省很多時(shí)間了咯。
    發(fā)表于 03-31 06:52

    typedef volatile signed short什么意思

    typedef volatile signed short什么意思,求求
    發(fā)表于 07-18 11:58

    wire 和 assign的 區(qū)別 ---求助

    regrst_nr2;wirelocked; (1)wire sysrst_nr0= rst_nr2 & locked; (2)assign sysrst_nr0= rst_nr2 & locked;上面 兩個(gè)賦值 一樣嗎,有區(qū)別嗎
    發(fā)表于 02-20 10:59

    資料下載:HDL中的unsigned與signed

    unsigned與signed:想必大家在C語(yǔ)言是經(jīng)常用到,可不知HDL語(yǔ)言中的unsigned與signed是否常用羅!其含義與C語(yǔ)言中的意思無(wú)異,區(qū)別主要是取值范圍。unsigned
    發(fā)表于 07-02 07:59

    HDL語(yǔ)言中的unsigned與signed的主要區(qū)別是什么

    unsigned是什么意思?signed是什么意思?HDL語(yǔ)言中的unsigned與signed的主要區(qū)別是什么?
    發(fā)表于 09-24 07:02

    什么是DLP投?和液晶投有何區(qū)別?

    什么是DLP投?和液晶投有何區(qū)別? 相信曾在一段時(shí)間里,你耳邊經(jīng)常聽(tīng)到、媒體上經(jīng)常看到"投電視"一詞,或許你正在每天都在使用它。
    發(fā)表于 02-06 11:48 ?3458次閱讀

    投電視,投電視工作原理是什么?

    投電視,投電視工作原理是什么? 一、何為投電視  顧名思義,"投"就是背后投影的電視機(jī)。一種假借投影和反射原理,
    發(fā)表于 03-24 11:59 ?1.7w次閱讀

    舌診圖像點(diǎn)和瘀點(diǎn)的識(shí)別與提取

    計(jì)算機(jī)舌診系統(tǒng)中,點(diǎn)和瘀血點(diǎn)是重要的舌象?;诎唿c(diǎn)檢測(cè)、支持向量機(jī)( SVM)和K均值聚類算法,提出了對(duì)舌診圖像中點(diǎn)和瘀點(diǎn)的識(shí)別及提取方法。首先利用SimpleBlobDetector斑點(diǎn)
    發(fā)表于 11-20 11:34 ?4次下載
    舌診圖像點(diǎn)<b class='flag-5'>刺</b>和瘀點(diǎn)的識(shí)別與提取

    投電視歷史_投電視的應(yīng)用領(lǐng)域

    本文首先闡述了投電視的歷史。其次介紹了投電視的優(yōu)勢(shì),最后介紹了投電視的應(yīng)用領(lǐng)域。
    發(fā)表于 09-14 16:55 ?3519次閱讀

    投電視的安裝方法_投電視的保養(yǎng)維護(hù)

    本文主要闡述了投電視的安裝方法及投電視的保養(yǎng)維護(hù)。
    發(fā)表于 09-15 16:49 ?3353次閱讀

    專業(yè)游戲手機(jī)”iQOO Neo5開(kāi)始首次發(fā)售

    iQOO正式推出了搭載“雙芯”的“新生代性能旗艦”iQOO Neo5手機(jī),堪稱“專業(yè)游戲手機(jī)”。這款手機(jī)已開(kāi)始首次發(fā)售。
    的頭像 發(fā)表于 03-22 10:19 ?2408次閱讀

    miniLED芯片晶工藝對(duì)錫膏需要什么條件?

    miniLED顯示器的制造,今天錫膏廠家來(lái)聊一聊miniLED芯片晶工藝對(duì)錫膏需要什么條件?如何理解晶工藝?晶工藝是在miniLED制造過(guò)程中所用到的其中一種工藝,
    的頭像 發(fā)表于 03-03 16:50 ?1215次閱讀
    miniLED芯片<b class='flag-5'>刺</b>晶工藝對(duì)錫膏需要什么條件?

    Grok即將上線!馬斯克據(jù)此成為“數(shù)據(jù)封建王”?

    馬斯克Open AI,即將成為“數(shù)據(jù)封建主”?
    的頭像 發(fā)表于 12-12 10:18 ?881次閱讀
    Grok即將上線!馬斯克據(jù)此成為“數(shù)據(jù)封建王”?

    assign語(yǔ)句和always語(yǔ)句的用法

    Assign語(yǔ)句和Always語(yǔ)句是在硬件描述語(yǔ)言(HDL)中常用的兩種語(yǔ)句,用于對(duì)數(shù)字電路建模和設(shè)計(jì)。Assign語(yǔ)句用于連續(xù)賦值,而Always語(yǔ)句用于時(shí)序邏輯建模。本文將詳細(xì)探討這兩種語(yǔ)句
    的頭像 發(fā)表于 02-22 16:24 ?3954次閱讀

    Verilog中signed和$signed()的用法

    1、在verilog中有時(shí)會(huì)用signed修飾符來(lái)修飾定義的數(shù)據(jù),運(yùn)算的時(shí)候也會(huì)用$signed()任務(wù)來(lái)強(qiáng)制轉(zhuǎn)換數(shù)據(jù),那么signed的修飾是為什么呢,是為了區(qū)分有符號(hào)數(shù)和無(wú)符號(hào)數(shù)的加法和乘法
    的頭像 發(fā)表于 02-17 17:47 ?657次閱讀
    Verilog中<b class='flag-5'>signed</b>和$<b class='flag-5'>signed</b>()的用法