精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

SystemVerilog-運算符/表達式規則

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2022-08-03 09:03 ? 次閱讀

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

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

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

3d888314-12c4-11ed-ba43-dac502259ad0.png

介紹

RTL建模中廣泛使用的運算符是條件運算符,也稱為三元運算符,該運算符用于在兩個表達式之間進行選擇——表5-2列出了用于表示條件運算符的重點。

表5-2:RTL建模的條件(三元)運算符

運算符 示例用法 描述
?: s?m:n 如果s為真,則選擇m;如果s為假,則選擇n,否則(s不為真不為假)對m和n進行按位比較

問號(?)前面列出的表達式被稱為控制表達式(control expression),表示它可以是一個簡單的整數值(任何大小的向量,包括1位),也可以是另一個返回整數值的操作的結果。例如:

3dba5b0a-12c4-11ed-ba43-dac502259ad0.png

使用以下規則將控制表達式計算為true或false:

如果所有位為l,則表達式為true。

如果所有位均為0,則表達式為false。

如果未設置任何位且并非所有位均為0,則表達式未知,如果某些位為X或Z,則可能出現這種情況。

對于4-state值,控制表達式可能既不是真的也不是假的。在下面的值中,沒有一個位是l,但不是所有的位都是0。

3dd90118-12c4-11ed-ba43-dac502259ad0.png

當控制表達式未知時,條件運算符對兩個可能的返回值進行按位比較。如果對應位均為0,則該位位置返回0,如果對應位均為l,則該位位置返回1。如果對應的位不同,或者任一位有X或Z值,則返回該位位置的X。下面的示例演示了這種仿真行為。

3dea21f0-12c4-11ed-ba43-dac502259ad0.png

條件運算符的行為通常類似于硬件多路復用器。示例5-3說明了如何使用條件運算符在寄存器的兩個輸入之間進行選擇。圖5-3顯示了綜合該示例的結果。條件運算符映射到四個多路復用器,四位d1和d2輸入的每一位對應一個多路復用器。

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

//4-bitregisterwithmultiplexedDinput,usingconditional
//operator.
//
//`begin_keywords"1800-2012"http://useSystemVerilog-2012keywords
modulemuxed_register
#(parameterWIDTH=4)//registersize
(inputlogicclk,//1-bitinput
inputlogicdata_select,//1-bitinput
inputlogic[WIDTH-1:0]d1,d2,//scalableinputsize
outputlogic[WIDTH-1:0]q_out//scalableoutputsize
);
timeunit1ns;timeprecision1ns;

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

endmodule:?muxed_register
//`end_keywords
圖形5-3:示例5-3的綜合結果:條件運算符(多路復用寄存器) 3e099fb2-12c4-11ed-ba43-dac502259ad0.png

圖5-3所示的電路是綜合編譯器將電路映射到特定ASICFPGA目標實現之前的中間通用綜合結果。用于生成圖5-3的綜合編譯器使用了具有未連接的set和rst輸入的通用觸發器,使用ASIC或FPGA庫的最終實現可能能夠使用沒有這些輸入的觸發器(如果目標設備中可用)。不同的綜合編譯器可能會使用不同的通用型組件來表示這些中間結果。

條件運算符并不總是作為多路復用器實現。綜合編譯器可能會根據操作數的類型和運算的上下文,將條件運算符映射并優化為其他類型的門級邏輯。在示例5-4中,條件運算符表示三態緩沖器,而不是多路復用邏輯,圖5-4顯示了綜合該示例的結果,

示例5-4:使用條件運算符:帶三態輸出的4位加法器

//4-bitadderwithtri-stateoutputs,usingconditionaloperator
//(nocarry).
//
//`begin_keywords"1800-2012"http://useSystemVerilog-2012keywords
moduletri_state_adder
#(parameterN=4)//N-bitaddersize
(inputlogicenable,//outputenable
inputlogic[N-1:0]a,b,//scalableinputsize
outputtrilogic[N-1:0]out//tri-stateoutput,nettype
);
timeunit1ns;timeprecision1ns;

assignout=enable?(a+b):'z;//tri-statebuffer

endmodule:tri_state_adder
//`end_keywords

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

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

圖5-4:示例5-4的綜合結果:條件運算符(三態輸出) 3e375254-12c4-11ed-ba43-dac502259ad0.png

3e678802-12c4-11ed-ba43-dac502259ad0.jpg

SystemVerilog-連接和復制運算符

3e7804ac-12c4-11ed-ba43-dac502259ad0.jpg

SystemVerilog-運算符/表達式規則

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

    關注

    31

    文章

    5250

    瀏覽量

    119187
  • 端口
    +關注

    關注

    4

    文章

    915

    瀏覽量

    31856
  • 運算符
    +關注

    關注

    0

    文章

    166

    瀏覽量

    11013

原文標題:SystemVerilog-條件(三元)運算符

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    玩轉SQLite8:運算符表達式

    本篇介紹了SQLite的基礎運算符表達式,并通過命令行的方式執行sql語句進行測試驗證,在實際開發中,可使用C/C++ API函數來使用。
    的頭像 發表于 09-27 08:56 ?2269次閱讀
    玩轉SQLite8:<b class='flag-5'>運算符</b>與<b class='flag-5'>表達式</b>

    JAVA語言的運算符表達式

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

    數據類型、運算符表達式

    數據類型、運算符表達式2.1   程序設計概述2.2  C語言的數據類型 2.3  常量和變量 2.4 
    發表于 03-10 15:05

    關于C語言的運算符表達式--筆記1

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

    C語言程序設計--運算符表達式

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

    單片機C語言教程-運算符表達式

    單片機C語言教程-運算符表達式   單片機C語言教程-運算符表達式  運算符的種類、優先級和結合性  c語言中運
    發表于 03-27 17:13 ?2174次閱讀

    基于運算符信息的數學表達式檢索技術

    傳統的文本檢索技術主要面向一維文本,難以用于對二維結構數學表達式的檢索。針對該問題,通過引入公式描述結構,實現基于運算符信息的數學表達式檢索。利用公式描述結構提取算法獲取 Latex數學表達式
    發表于 04-29 15:58 ?2次下載
    基于<b class='flag-5'>運算符</b>信息的數學<b class='flag-5'>表達式</b>檢索技術

    RTL表達式運算符

    經過幾周的更新,SV核心部分用戶自定義類型和包內容已更新完畢,接下來就是RTL表達式運算符
    的頭像 發表于 07-27 09:11 ?1561次閱讀

    關于RTL表達式運算符

    經過幾周的更新,SV核心部分用戶自定義類型和包內容已更新完畢,接下來就是RTL表達式運算符
    的頭像 發表于 09-01 09:13 ?1704次閱讀

    RTL表達式運算符

    經過幾周的更新,SV核心部分用戶自定義類型和包內容已更新完畢,接下來就是RTL表達式運算符
    的頭像 發表于 10-11 10:15 ?1471次閱讀

    RTL表達式運算符

    經過幾周的更新,SV核心部分用戶自定義類型和包內容已更新完畢,接下來就是RTL表達式運算符
    的頭像 發表于 11-03 09:14 ?1162次閱讀

    運算符/表達式規則

    運算符對操作數執行操作。大多數運算符都有兩個操作數。例如,在運算a+b中,+(加法)運算的操作數是a和b。每個操作數都被稱為表達式
    的頭像 發表于 02-09 15:37 ?834次閱讀
    <b class='flag-5'>運算符</b>/<b class='flag-5'>表達式</b><b class='flag-5'>規則</b>

    邏輯運算符表達式

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

    位邏輯運算符表達式

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

    C語言基本的算術運算符表達式

    注意:自增和自減運算符只能用于變量,而不能用于常量或表達式 **C語言算術表達式運算符的優先級與結合性 ** 在表達式求值時,
    的頭像 發表于 03-09 10:44 ?1455次閱讀