女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

條件(三元)運(yùn)算符

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

數(shù)字硬件建模SystemVerilog-條件(三元)運(yùn)算符

圖片

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

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

圖片

介紹

RTL建模中廣泛使用的運(yùn)算符是條件運(yùn)算符,也稱為三元運(yùn)算符,該運(yùn)算符用于在兩個(gè)表達(dá)式之間進(jìn)行選擇——表5-2列出了用于表示條件運(yùn)算符的重點(diǎn)。

表5-2:RTL建模的條件(三元)運(yùn)算符| 運(yùn)算符 | 示例用法 | 描述 |

| -------- | ---------- | ------------------------------------------------------------------------------- |

| ?: | s?m:n | 如果s為真,則選擇m;如果s為假,則選擇n,否則(s不為真不為假)對(duì)m和n進(jìn)行按位比較 |

問(wèn)號(hào)(?)前面列出的表達(dá)式被稱為控制表達(dá)式(control expression),表示它可以是一個(gè)簡(jiǎn)單的整數(shù)值(任何大小的向量,包括1位),也可以是另一個(gè)返回整數(shù)值的操作的結(jié)果。例如:

圖片

使用以下規(guī)則將控制表達(dá)式計(jì)算為true或false:

  • 如果所有位為l,則表達(dá)式為true。
  • 如果所有位均為0,則表達(dá)式為false。
  • 如果未設(shè)置任何位且并非所有位均為0,則表達(dá)式未知,如果某些位為X或Z,則可能出現(xiàn)這種情況。

對(duì)于4-state值,控制表達(dá)式可能既不是真的也不是假的。在下面的值中,沒(méi)有一個(gè)位是l,但不是所有的位都是0。

圖片

當(dāng)控制表達(dá)式未知時(shí),條件運(yùn)算符對(duì)兩個(gè)可能的返回值進(jìn)行按位比較。如果對(duì)應(yīng)位均為0,則該位位置返回0,如果對(duì)應(yīng)位均為l,則該位位置返回1。如果對(duì)應(yīng)的位不同,或者任一位有X或Z值,則返回該位位置的X。下面的示例演示了這種仿真行為。

圖片

條件運(yùn)算符的行為通常類似于硬件多路復(fù)用器。示例5-3說(shuō)明了如何使用條件運(yùn)算符在寄存器的兩個(gè)輸入之間進(jìn)行選擇。圖5-3顯示了綜合該示例的結(jié)果。條件運(yùn)算符映射到四個(gè)多路復(fù)用器,四位d1和d2輸入的每一位對(duì)應(yīng)一個(gè)多路復(fù)用器。

示例5-3:使用條件運(yùn)算符:4位多路復(fù)用寄存器D輸入

// 4-bit register with multiplexed D input, using conditional
// operator.
//
//`begin_keywords "1800-2012" // use SystemVerilog-2012 keywords
module muxed_register
#(parameter WIDTH = 4)                 // register size
(input  logic             clk,         // 1-bit input
 input  logic             data_select, // 1-bit input
 input  logic [WIDTH-1:0] d1, d2,      // scalable input size
 output logic [WIDTH-1:0] q_out        // scalable output size
);
  timeunit 1ns; timeprecision 1ns;

  always_ff @(posedge clk)
    q_out <= data_select? d1 : d2;     // store d1 or d2

endmodule: muxed_register
//`end_keywords

圖形5-3:示例5-3的綜合結(jié)果:條件運(yùn)算符(多路復(fù)用寄存器)圖片

圖5-3所示的電路是綜合編譯器將電路映射到特定ASICFPGA目標(biāo)實(shí)現(xiàn)之前的中間通用綜合結(jié)果。用于生成圖5-3的綜合編譯器使用了具有未連接的set和rst輸入的通用觸發(fā)器,使用ASIC或FPGA庫(kù)的最終實(shí)現(xiàn)可能能夠使用沒(méi)有這些輸入的觸發(fā)器(如果目標(biāo)設(shè)備中可用)。不同的綜合編譯器可能會(huì)使用不同的通用型組件來(lái)表示這些中間結(jié)果。

條件運(yùn)算符并不總是作為多路復(fù)用器實(shí)現(xiàn)。綜合編譯器可能會(huì)根據(jù)操作數(shù)的類型和運(yùn)算的上下文,將條件運(yùn)算符映射并優(yōu)化為其他類型的門級(jí)邏輯。在示例5-4中,條件運(yùn)算符表示三態(tài)緩沖器,而不是多路復(fù)用邏輯,圖5-4顯示了綜合該示例的結(jié)果,

示例5-4:使用條件運(yùn)算符:帶三態(tài)輸出的4位加法器

// 4-bit adder with tri-state outputs, using conditional operator
// (no carry).
//
//`begin_keywords "1800-2012" // use SystemVerilog-2012 keywords
module tri_state_adder
#(parameter N = 4)                // N-bit adder size
(input  logic             enable, // output enable
input  logic     [N-1:0] a, b,   // scalable input size
output tri logic [N-1:0] out     // tri-state output, net type
);
 timeunit 1ns; timeprecision 1ns;

 assign out = enable? (a + b) : 'z;  // tri-state buffer

endmodule: tri_state_adder
//`end_keywords

在本例中,條件運(yùn)算符(?)選擇輸出端口應(yīng)分配(a+b)或高阻抗。如果en為false,則將out賦值為z。’z標(biāo)記是一個(gè)文字值,用于將表達(dá)式的所有位設(shè)置為高阻抗,并自動(dòng)縮放到表達(dá)式的向量大小。有關(guān)向量填充文字值的更多詳細(xì)信息,請(qǐng)參見(jiàn)之前的文章。

在示例5-4中觀察,out三態(tài)輸出端口被聲明為3-state logic類型,而不是通常的邏輯類型,logic數(shù)據(jù)類型只定義端口時(shí)可以有四態(tài)值,它不定義端口類型是網(wǎng)絡(luò)類型或者變量類型。輸出端口默認(rèn)為變量類型,除非顯式聲明為NET(網(wǎng)絡(luò))類型。(相反,輸入端口將默認(rèn)為NET類型,除非顯式聲明為變量類型),關(guān)鍵字?tri聲明網(wǎng)絡(luò)類型。tri類型在各個(gè)方面都與wire類型相同,但tri關(guān)鍵字可以幫助記錄網(wǎng)絡(luò)或端口的預(yù)期三態(tài)(高阻抗)值。

圖5-4:示例5-4的綜合結(jié)果:條件運(yùn)算符(三態(tài)輸出)圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)注

    1

    文章

    315

    瀏覽量

    61377
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    388

    瀏覽量

    60588
  • 運(yùn)算符
    +關(guān)注

    關(guān)注

    0

    文章

    172

    瀏覽量

    11325
收藏 人收藏

    評(píng)論

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

    C語(yǔ)言運(yùn)算符的使用方法

    詳細(xì)介紹了C語(yǔ)言表達(dá)式、算術(shù)運(yùn)算符、賦值運(yùn)算符、關(guān)系運(yùn)算符條件結(jié)構(gòu)、邏輯運(yùn)算符、位運(yùn)算符的語(yǔ)法
    發(fā)表于 11-02 11:30 ?2176次閱讀
    C語(yǔ)言<b class='flag-5'>運(yùn)算符</b>的使用方法

    條件運(yùn)算符是什么_條件運(yùn)算符有哪些

    運(yùn)算符優(yōu)先級(jí)高于賦值、逗號(hào)運(yùn)算符,低于其他運(yùn)算符。關(guān)系運(yùn)算實(shí)際上是邏輯比較運(yùn)算,它是邏輯運(yùn)算
    發(fā)表于 11-16 16:02 ?1.1w次閱讀
    <b class='flag-5'>條件</b><b class='flag-5'>運(yùn)算符</b>是什么_<b class='flag-5'>條件</b><b class='flag-5'>運(yùn)算符</b>有哪些

    單目運(yùn)算符是什么_單目運(yùn)算符有哪些

    單目運(yùn)算符是指運(yùn)算所需變量為一個(gè)的運(yùn)算符,又叫一運(yùn)算符,其中有邏輯非運(yùn)算符:!、按位取反
    的頭像 發(fā)表于 02-24 15:42 ?6.1w次閱讀
    單目<b class='flag-5'>運(yùn)算符</b>是什么_單目<b class='flag-5'>運(yùn)算符</b>有哪些

    條件運(yùn)算符的用法_C運(yùn)算符的結(jié)合方向

    條件運(yùn)算符優(yōu)先級(jí)高于賦值、逗號(hào)運(yùn)算符,低于其他運(yùn)算符。在標(biāo)準(zhǔn)C語(yǔ)言的文檔里,對(duì)操作的結(jié)合性并沒(méi)有作出非常清楚的解釋。一個(gè)滿分的回答是:它是
    發(fā)表于 02-24 16:36 ?9809次閱讀

    C運(yùn)算符的優(yōu)先級(jí)和結(jié)合性詳細(xì)解決

    運(yùn)算符是一種告訴編譯器執(zhí)行特定的數(shù)學(xué)或邏輯操作的符號(hào)。 C語(yǔ)言內(nèi)置了豐富的運(yùn)算符,大體可分為10類:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位
    的頭像 發(fā)表于 02-22 17:27 ?3516次閱讀

    淺析MySQL中的各類運(yùn)算符

    MySQL支持多種運(yùn)算符,我們?cè)趯慡QL腳本時(shí)經(jīng)常會(huì)需要用到各種各樣的運(yùn)算符,這些運(yùn)算符可以用來(lái)連接表達(dá)式,進(jìn)而從數(shù)據(jù)庫(kù)中查詢我們需要的結(jié)果集等。這些類型主要包括算術(shù)運(yùn)算符、比較
    的頭像 發(fā)表于 05-03 17:41 ?2208次閱讀
    淺析MySQL中的各類<b class='flag-5'>運(yùn)算符</b>

    python運(yùn)算符是什么

    python運(yùn)算符 0. 什么是運(yùn)算符? 本章節(jié)主要說(shuō)明Python的運(yùn)算符。舉個(gè)簡(jiǎn)單的例子 4 +5 = 9 。 例子中,4和5被稱為操作數(shù),“+”號(hào)為運(yùn)算符。 Python語(yǔ)言支持
    的頭像 發(fā)表于 02-21 16:44 ?2616次閱讀

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

    RTL建模中廣泛使用的運(yùn)算符條件運(yùn)算符,也稱為三元運(yùn)算符,該運(yùn)算符用于在兩個(gè)表達(dá)式之間進(jìn)行選擇
    的頭像 發(fā)表于 08-03 09:03 ?3540次閱讀

    如何靈活使用三元運(yùn)算符

    給定四個(gè)無(wú)符號(hào)數(shù),請(qǐng)找出最小值。無(wú)符號(hào)數(shù)可以與標(biāo)準(zhǔn)比較運(yùn)算符(a < b)進(jìn)行比較。使用條件運(yùn)算符描述一個(gè)兩路的最小值電路,然后組合它來(lái)創(chuàng)建一個(gè)4路最小電路。可能需要一些線向量作為中間結(jié)果。
    的頭像 發(fā)表于 09-28 17:07 ?1615次閱讀

    什么是運(yùn)算符重載

    重載運(yùn)算符是具有特殊名稱的函數(shù),是通過(guò)關(guān)鍵字** operator **后跟運(yùn)算符的符號(hào)來(lái)定義的
    的頭像 發(fā)表于 01-20 15:30 ?2832次閱讀

    什么是移位運(yùn)算符

    移位運(yùn)算符將向量的位向右或向左移位指定的次數(shù)。SystemVerilog具有按位和算術(shù)移位運(yùn)算符
    的頭像 發(fā)表于 02-09 15:49 ?2144次閱讀
    什么是移位<b class='flag-5'>運(yùn)算符</b>

    C語(yǔ)言使用條件運(yùn)算符注意事項(xiàng)

    條件運(yùn)算符優(yōu)先于賦值運(yùn)算符 * 表達(dá)式“2”和表達(dá)式“3”不僅可以是數(shù)值表達(dá)式,還可以是賦值表達(dá)式或函數(shù)表達(dá)式。 * 條件表達(dá)式相當(dāng)于一個(gè)不帶關(guān)鍵字if的if語(yǔ)句,用它處理簡(jiǎn)單選擇
    的頭像 發(fā)表于 03-09 10:50 ?1102次閱讀

    Python中常見(jiàn)的條件運(yùn)算符有哪些

    條件運(yùn)算符 條件判斷,if語(yǔ)句重在判斷并選擇是否執(zhí)行,而沒(méi)有過(guò)多涉及條件本身。 下面是Python中常見(jiàn)的條件
    的頭像 發(fā)表于 09-12 16:47 ?2132次閱讀

    Golang為何舍棄三元運(yùn)算符

    golang中不存在?:運(yùn)算符的原因是因?yàn)檎Z(yǔ)言設(shè)計(jì)者已經(jīng)預(yù)見(jiàn)到三元運(yùn)算符經(jīng)常被用來(lái)構(gòu)建一些極其復(fù)雜的表達(dá)式。雖然使用if進(jìn)行替代會(huì)讓代碼顯得更長(zhǎng),但這毫無(wú)疑問(wèn)可讀性更強(qiáng)。
    的頭像 發(fā)表于 04-03 15:13 ?914次閱讀

    c語(yǔ)言從右到左的運(yùn)算符有哪些

    用在變量之后時(shí),它們會(huì)先返回變量的原始值,然后再進(jìn)行遞增或遞減。 三元條件運(yùn)算符 ( ?: ):這個(gè)運(yùn)算符的求值順序是從右到左。首先計(jì)算第
    的頭像 發(fā)表于 08-20 11:39 ?1624次閱讀