欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

運算符/表達(dá)式規(guī)則

汽車電子技術(shù) ? 來源:OpenFPGA ? 作者: 碎碎思 ? 2023-02-09 15:37 ? 次閱讀

數(shù)字硬件建模SystemVerilog-運算符/表達(dá)式規(guī)則

poYBAGPkoiqAc3STAATQdIY-LPg781.png

經(jīng)過幾周的更新,SV核心部分用戶自定義類型和包內(nèi)容已更新完畢,接下來就是RTL表達(dá)式和運算符。

馬上HDLBits-SystemVerilog版本也開始準(zhǔn)備了,基本這一部分完成后就開始更新~

pYYBAGPkojaAcm1hAAItp2BsT6U762.png

介紹

運算符對操作數(shù)執(zhí)行操作。大多數(shù)運算符都有兩個操作數(shù)。例如,在運算a+b中,+(加法)運算的操作數(shù)是a和b。每個操作數(shù)都被稱為表達(dá)式,表達(dá)式可以是文字值、變量、網(wǎng)絡(luò);函數(shù)調(diào)用的返回,或另一個操作的結(jié)果。表達(dá)式有許多影響操作執(zhí)行方式的特征。這些特征在后面章節(jié)中討論。

4-state(4態(tài))和2-state(2態(tài))操作

表達(dá)式可以是2態(tài)或4態(tài)。2態(tài)表達(dá)式的每個位只能有0或1的值。2態(tài)表達(dá)式不能具有高阻抗值(由字母Z表示)、未知值(由字母X表示)或不關(guān)心值(也由X表示)。4態(tài)表達(dá)式可以在表達(dá)式的任何位中包含0、l、Z或X的值。

對2態(tài)和4態(tài)表達(dá)式進(jìn)行運算的規(guī)則很簡單——當(dāng)任何操作數(shù)都是4態(tài)表達(dá)式時,運算的結(jié)果將是4態(tài)表達(dá)式。所有操作數(shù)都必須是2態(tài)表達(dá)式才能得到2態(tài)結(jié)果。如果結(jié)果被用作另一個操作的操作數(shù),或在編程語句(如if-else)中求值,則此規(guī)則可能會影響其他操作。

該章中建議的編碼準(zhǔn)則是,RTL建模只使用4態(tài)類型。一個主要原因是,運算結(jié)果中任何一位的X都可以很好地表明其中一個操作數(shù)有問題。當(dāng)使用2態(tài)類型時,設(shè)計問題可能會被隱藏,因為操作結(jié)果中沒有X值指示潛在的錯誤(之前的文章有詳細(xì)討論這部分)。

X-OPTIMISM和X-PESSIMISM

大多數(shù)SystemVerilog運算符都是X-optimism,這意味著即使操作數(shù)中有X或Z值,該操作也可能產(chǎn)生已知結(jié)果。一些SystemVerilog運算符,如算術(shù)運算符和關(guān)系運算符,是X-pessimism,這意味著,如果任何操作數(shù)的任何位具有X或Z值,則結(jié)果的所有位將自動為X。

X-OPTIMISM。即使一個或兩個操作數(shù)的位具有X或Z值,X-optimism也可以產(chǎn)生有效的結(jié)果??紤]下面的示例和所示的邏輯值:

poYBAGPkokaATJccAACNkyuO7PQ207.png

該運算的結(jié)果是值4’b0000。這是因為&運算符為其操作數(shù)的每一位建模一個數(shù)字and邏輯門。在數(shù)字邏輯中,0與任何值的AND運算將產(chǎn)生0,操作數(shù)a中的高阻抗位(由Z表示)和未知位(由X表示)在result中變?yōu)?,因為這些位與b中對應(yīng)的位進(jìn)行AND運算,b的值為0。這種行為被稱為X-OPTIMISM。仿真將有一個已知的結(jié)果,即使操作數(shù)的位具有X或Z值。

X-OPTIMISM僅適用于仿真可以準(zhǔn)確預(yù)測實際邏輯門行為的值。在下面的示例中,b操作數(shù)是全1而不是全0。

poYBAGPkolGAdhGgAAB2TH-sLzE865.png

運算的結(jié)果是值4’b01xx。對于這些操作數(shù)值,X-optimism不適用于最右邊的兩個位。在實際邏輯門中,高阻抗AND (與)X,可能會產(chǎn)生0或1,其值取決于一系列條件,例如用于構(gòu)建與門的晶體管類型、晶體管電路的阻抗和電容、工作電壓,甚至環(huán)境溫度。抽象RTL和運算符沒有此詳細(xì)信息。如果沒有這些細(xì)節(jié),數(shù)字仿真無法預(yù)測0或1是否會由1與Z相加產(chǎn)生。類似地,X代表未知值,這意味著實際邏輯門值可能是0、1或Z,如果存在這種模糊性,數(shù)字仿真無法預(yù)測0或1是否會由1與X相加產(chǎn)生。

**X-pessimistic。少數(shù)SystemVerilog運算符更"悲觀"**。如果任何操作數(shù)的任何位具有X或Z值,則該操作會自動返回一個值,其中所有位都為X。X-pessimistic如算術(shù)運算符(如加法運算符)和關(guān)系運算符(如小于運算符)。

pYYBAGPkolyAQQi0AACSKn8XF2k830.png

運算的結(jié)果是4’bxxxx。出現(xiàn)這種X是因為算術(shù)加法運算符執(zhí)行基于數(shù)字的加法,而不是按位加法。操作數(shù)a的值為4’b000x,這不是一個數(shù)字,因此運算結(jié)果是一個未知值。

后面會更詳細(xì)地研究SystemVerilog RTL運算符,以及每個運算符是X-optimistic or X-pessimistic。為了編寫能夠正確表示的RTL模型,理解這些影響硬件行為至關(guān)重要。

運算向量大小和自動向量擴展

運算符的每個操作數(shù)可以是任意大小的向量;包括標(biāo)量(1位)。操作數(shù)的向量大小可能會影響操作的執(zhí)行方式。一個重要的考慮因素是當(dāng)運算符的操作數(shù)是不同的向量大小時。

自定義操作數(shù)Self-determined operands。有些運算符獨立處理每個操作數(shù)。操作數(shù)是否為不同的向量大小并不重要。這些運算符的操作數(shù)稱為自定數(shù)self-determined。在下面的示例中,運算符執(zhí)行邏輯“&&”運算,測試兩個操作數(shù)是否都為真。如果是,則該操作返回的結(jié)果為true,否則,該操作返回的結(jié)果為false:

pYYBAGPkomeAQxOKAABns3Eh6lk489.png

操作數(shù)a和b是自定數(shù)。每個操作數(shù)的計算結(jié)果可以是真或假,與另一個操作數(shù)的向量大小無關(guān)。

上下文確定的操作數(shù)。許多運算符需要將操作數(shù)展開為相同的向量大小,然后才能執(zhí)行操作。這些運算符的操作數(shù)被稱為上下文確定的操作數(shù)(context-determined)。該操作將使最短的操作數(shù)向左擴展,使其與最大的操作數(shù)的向量大小相同。在下面的示例中,&運算符執(zhí)行按位AND運算,將每個操作數(shù)的每一位相加,并返回布爾結(jié)果。

poYBAGPkonKAW7ESAACAQQNGsl8544.png

為了將a的每一位與b的每一位進(jìn)行AND,該操作將兩個操作數(shù)調(diào)整為相同的向量寬度。該操作將檢查操作的上下文以確定最大的操作數(shù),然后左擴展較短的操作數(shù)以匹配最大操作數(shù)的大小。擴展規(guī)則如下:

  • 如果最左邊的位為0或l,且操作數(shù)為無符號類型,則操作數(shù)為零擴展(每個附加位的值為0)。
  • 如果最左邊的位是0或l,并且操作數(shù)是有符號類型,則操作數(shù)是符號擴展的(每個額外的位被賦予最左邊位的值或原始值。最左邊的位被稱為符號位)。
  • 如果最左邊的位是Z,則操作數(shù)是Z擴展的(每個額外的位都有Z的值)。
  • 如果最左邊的位是X,則操作數(shù)是X擴展的(每個附加位的值為X)。

算術(shù)運算的上下文推斷大小比其他運算符的上下文推斷大小更復(fù)雜,上下文推斷大小不僅考慮運算符的操作數(shù),還考慮賦值語句右側(cè)和左側(cè)所有表達(dá)式的向量大小,如以下代碼所示:

pYYBAGPkonyAMMnpAACAnKDl3ao603.png

有符號和無符號表達(dá)式

算術(shù)、比較和移位運算符可以執(zhí)行有符號或無符號運算。規(guī)則很簡單——如果執(zhí)行運算的所有操作數(shù)都是有符號的,則執(zhí)行有符號運算。如果任何受影響的操作數(shù)是無符號的,則執(zhí)行無符號操作——以下代碼段說明了這些規(guī)則。注釋中注明了操作類型。

pYYBAGPkooeAHDMlAADZItIyskM228.png

運算符的符號性完全由操作運算符的操作數(shù)決定。它不受賦值語句左側(cè)的符號性影響。

整數(shù)(向量)和實數(shù)(浮點)表達(dá)式

所有SystemVerilog運算符都可以對整數(shù)值執(zhí)行操作。IEEE SystemVerilog標(biāo)準(zhǔn)將整數(shù)值稱為整數(shù)表達(dá)式——由一個或多個連續(xù)位組成的值。工程師通常將這些整數(shù)或整數(shù)值稱為向量。

SystemVerilog將定點和浮點表達(dá)式稱為實數(shù)表達(dá)式。大多數(shù)類型的運算都可以在實數(shù)表達(dá)式上執(zhí)行,包括:賦值運算、算術(shù)運算、邏輯(真/假)運算、比較運算和遞增/遞減運算。有一些操作無法在實數(shù)表達(dá)式上執(zhí)行。這些操作主要包括向量的位處理,例如位和部分選擇操作、按位操作、移位操作、連接操作和流操作。

可以對整數(shù)和實數(shù)表達(dá)式的混合執(zhí)行操作。混合類型運算的規(guī)則是,如果任何操作數(shù)是實數(shù)表達(dá)式,則另一個操作數(shù)將轉(zhuǎn)換為實數(shù)表達(dá)式,并執(zhí)行浮點運算。

筆記
RTL綜合編譯器通常不支持實數(shù)(浮點)表達(dá)式。高級綜合(HLS)工具可用于復(fù)雜的算法設(shè)計。浮點和定點設(shè)計不在本系列文章的范圍之內(nèi)。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4346

    瀏覽量

    63006
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    613

    瀏覽量

    28474
  • 運算符
    +關(guān)注

    關(guān)注

    0

    文章

    172

    瀏覽量

    11116
收藏 人收藏

    評論

    相關(guān)推薦

    玩轉(zhuǎn)SQLite8:運算符表達(dá)式

    本篇介紹了SQLite的基礎(chǔ)運算符表達(dá)式,并通過命令行的方式執(zhí)行sql語句進(jìn)行測試驗證,在實際開發(fā)中,可使用C/C++ API函數(shù)來使用。
    的頭像 發(fā)表于 09-27 08:56 ?2519次閱讀
    玩轉(zhuǎn)SQLite8:<b class='flag-5'>運算符</b>與<b class='flag-5'>表達(dá)式</b>

    JAVA語言的運算符表達(dá)式

    JAVA語言的運算符表達(dá)式3.5 運算符表達(dá)式數(shù)據(jù)的類型除了限定數(shù)據(jù)的存儲方式、取值范圍之外,還定義了對該數(shù)據(jù)類型可進(jìn)行的操作即運算。表
    發(fā)表于 12-06 00:28

    數(shù)據(jù)類型、運算符表達(dá)式

    數(shù)據(jù)類型、運算符表達(dá)式2.1   程序設(shè)計概述2.2  C語言的數(shù)據(jù)類型 2.3  常量和變量 2.4 
    發(fā)表于 03-10 15:05

    關(guān)于C語言的運算符表達(dá)式--筆記1

    關(guān)于C語言的運算符表達(dá)式學(xué)好C語言的基礎(chǔ)運算,還是很有必要,無論在C語言,還是后面單片機,都會用到基礎(chǔ)運算。如果不能很好運用,會給我們編程帶來很多麻煩,廢話不多說,現(xiàn)在開始寫一些個人
    發(fā)表于 07-19 00:48

    C語言程序設(shè)計--運算符表達(dá)式

    c語言對數(shù)據(jù)有很強的表達(dá)能力,具有十分豐富的運算符,利用這些運算符可以組成各種表達(dá)式及語句。運算符就是完成某種特定
    發(fā)表于 07-14 21:30 ?46次下載

    單片機C語言教程-運算符表達(dá)式

    單片機C語言教程-運算符表達(dá)式   單片機C語言教程-運算符表達(dá)式  運算符的種類、優(yōu)先級和結(jié)合性  c語言中運
    發(fā)表于 03-27 17:13 ?2240次閱讀

    基于運算符信息的數(shù)學(xué)表達(dá)式檢索技術(shù)

    傳統(tǒng)的文本檢索技術(shù)主要面向一維文本,難以用于對二維結(jié)構(gòu)數(shù)學(xué)表達(dá)式的檢索。針對該問題,通過引入公式描述結(jié)構(gòu),實現(xiàn)基于運算符信息的數(shù)學(xué)表達(dá)式檢索。利用公式描述結(jié)構(gòu)提取算法獲取 Latex數(shù)學(xué)表達(dá)式
    發(fā)表于 04-29 15:58 ?2次下載
    基于<b class='flag-5'>運算符</b>信息的數(shù)學(xué)<b class='flag-5'>表達(dá)式</b>檢索技術(shù)

    RTL表達(dá)式運算符

    經(jīng)過幾周的更新,SV核心部分用戶自定義類型和包內(nèi)容已更新完畢,接下來就是RTL表達(dá)式運算符。
    的頭像 發(fā)表于 07-27 09:11 ?1793次閱讀

    SystemVerilog-運算符/表達(dá)式規(guī)則

    RTL建模中廣泛使用的運算符是條件運算符,也稱為三元運算符,該運算符用于在兩個表達(dá)式之間進(jìn)行選擇——表5-2列出了用于表示條件
    的頭像 發(fā)表于 08-03 09:03 ?3244次閱讀

    關(guān)于RTL表達(dá)式運算符

    經(jīng)過幾周的更新,SV核心部分用戶自定義類型和包內(nèi)容已更新完畢,接下來就是RTL表達(dá)式運算符。
    的頭像 發(fā)表于 09-01 09:13 ?1957次閱讀

    RTL表達(dá)式運算符

    經(jīng)過幾周的更新,SV核心部分用戶自定義類型和包內(nèi)容已更新完畢,接下來就是RTL表達(dá)式運算符。
    的頭像 發(fā)表于 10-11 10:15 ?1826次閱讀

    RTL表達(dá)式運算符

    經(jīng)過幾周的更新,SV核心部分用戶自定義類型和包內(nèi)容已更新完畢,接下來就是RTL表達(dá)式運算符。
    的頭像 發(fā)表于 11-03 09:14 ?1452次閱讀

    邏輯運算符表達(dá)式

    在C語言中,我們通常會進(jìn)行真值與假值的判斷,這時我們就需要用到邏輯運算符與邏輯表達(dá)式。如果表達(dá)式的值不為0,則通通返回為真值。只有當(dāng)表達(dá)式的值為0時,才會返回假值。
    的頭像 發(fā)表于 02-21 15:16 ?2244次閱讀
    邏輯<b class='flag-5'>運算符</b>與<b class='flag-5'>表達(dá)式</b>

    位邏輯運算符表達(dá)式

    位邏輯運算符與位邏輯表達(dá)式可以實現(xiàn)位的編輯,比如位的清零、設(shè)置、取反和取補等操作。使用位邏輯運算符與位邏輯表達(dá)式可以在不使用匯編的情況下實現(xiàn)部分匯編的功能
    的頭像 發(fā)表于 02-21 15:22 ?1316次閱讀
    位邏輯<b class='flag-5'>運算符</b>與<b class='flag-5'>表達(dá)式</b>

    C語言基本的算術(shù)運算符表達(dá)式

    注意:自增和自減運算符只能用于變量,而不能用于常量或表達(dá)式 **C語言算術(shù)表達(dá)式運算符的優(yōu)先級與結(jié)合性 ** 在表達(dá)式求值時,
    的頭像 發(fā)表于 03-09 10:44 ?1735次閱讀