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

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

3天內不再提示

關于RTL表達式和運算符

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2022-09-01 09:13 ? 次閱讀

數字硬件建模SystemVerilog-移位運算符

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

3edd705e-298e-11ed-ba43-dac502259ad0.png

移位運算符

移位運算符將向量的位向右或向左移位指定的次數。SystemVerilog具有按位和算術移位運算符,如表5-18所示。

表5-18:RTL建模的移位運算符 3f0d31ae-298e-11ed-ba43-dac502259ad0.png

按位移位只是將向量的位向右或向左移動指定的次數,移出向量的位丟失。移入的新位是零填充的。例如,操作8’b11000101 << 2將產生值8’b00010100。按位移位將執行相同的操作,無論被移位的值是有符號的還是無符號的。

算術左移位對有符號和無符號表達式執行與按位右移位相同的操作。算術右移位對“無符號”和“有符號”表達式執行不同的運算。如果要移位的表達式是無符號的, 算術右移位的行為與按位右移相同,即用零填充輸入位。如果表達式是有符號的,則算術右移將通過用符號位的值填充每個輸入位來保持值的有符號性。

圖5-11顯示了這些移位操作如何將向量的位移動2位,

圖5-11:按位和算術移位運算-將值向左或向右移動2位 圖5-11:按位和算術移位運算-將值向左或向右移動2位 3f335f78-298e-11ed-ba43-dac502259ad0.png

可綜合移位操作

移動固定的次數。固定次數的移位操作只需將總線的位重新布線,“輸入位”接地。實現固定移位不需要邏輯門。示例5-11說明了一個簡單的除二組合邏輯模型,其中通過將8位總線右移一位來進行除法。

示例5-11:使用移位運算符:通過右移一位除以二 3f65daa2-298e-11ed-ba43-dac502259ad0.png

圖5-12顯示了固定位數的右移是如何綜合的。綜合編譯器在模塊的輸入和輸出上放置了緩沖區,但沒有使用任何額外的門來執行操作。

圖5-12:示例5-11的綜合結果:移位運算符,按1位右移 3f8d1964-298e-11ed-ba43-dac502259ad0.png

固定次數的移位也可以使用連接操作來表示。下面兩行代碼在功能上是相同的。

3fc58d3a-298e-11ed-ba43-dac502259ad0.png

執行移位操作的兩種類型都將綜合為相同的布線硬件,一種類型沒有優于另一種類型的優勢。

移動次數可變??勺兇螖档囊莆徊僮鞔硎峭靶我莆黄鳎╞arrel shifter)的功能,但具體實現將取決于特定目標庫中可用的門級功能。一些目標設備可能有一個已經針對該設備進行了優化的預構建桶形移位器,其他設備可能需要綜合以從較低級別的門構建桶形移位器。

桶形移位器的一個應用是用2的冪乘(向左移位)或除(向右移位)。例如,左移1位將值乘以2。左移2位將一個值乘以4。

示例5-12顯示了可變左移操作的代碼

示例5-12:使用移位運算符:通過向左移位乘以二的冪 3fe42e34-298e-11ed-ba43-dac502259ad0.png

本例中的$ciog2系統函數用于計算base2exp輸入端口的寬度。此函數用于返回一個log2值的的上限(分數向上舍入到下一個整數)。該函數是計算一個值需要多少位的便捷方法。

圖5-13說明了該模型可能如何綜合。該示意圖是“在將移位功能映射并優化”到特定設備之前的“中間綜合結果”。通用的“左移位邏輯”組件表示未映射的移位操作。

圖5-13:綜合結果“例如5-12:移位運算符,可變左移位” 400df3ae-298e-11ed-ba43-dac502259ad0.png

綜合結果中的通用左移分量對其兩個輸入具有相同的位數。base2exp輸入未使用的高位與地相連。當綜合將通用左移組件映射到特定的目標實現時,這些未使用的位可能會被刪除。

移位運算符可用于乘以或除以除2的冪以外的值,以下示例將向量移動7次。

403a7866-298e-11ed-ba43-dac502259ad0.png

可以在硬件中使用cading shift實現非2次方的移位,例如,操作可以通過鏈接4位左移位器、2位左移位器和1位左移位器來完成7次左移位。

讓綜合器完成它的工作!綜合使工程師能夠在抽象層次上進行設計,專注于功能,而不必陷入實現細節的泥潭,也不必過度關注特定ASICFPGA的功能。綜合編譯器將抽象功能模型轉換為目標ASIC或FPGA的有效實現。雖然可以在更詳細的層面上仿真barrel shift行為,但這樣做通常沒有好處?,F代綜合編譯器使用移位運算符識別抽象RTL模型中的barrel shift行為,并將在目標設備中生成此功能的最佳實現。對于不同的目標設備,這種實現可能會有所不同,具體取決于該設備中可用的標準單元、LUT或門陣列。

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

    關注

    11

    文章

    2943

    瀏覽量

    65060
  • RTL
    RTL
    +關注

    關注

    1

    文章

    382

    瀏覽量

    59163
  • 移位器
    +關注

    關注

    0

    文章

    13

    瀏覽量

    8423
  • 運算符
    +關注

    關注

    0

    文章

    163

    瀏覽量

    10959

原文標題:SystemVerilog-移位運算符

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

收藏 人收藏

    評論

    相關推薦

    JAVA語言的運算符表達式

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

    數據類型、運算符表達式

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

    【跟我學單片機c語言】如何更好地使用C51運算符表達式

    `【跟我學單片機c語言】如何更好地使用C51運算符表達式之前說了常量和變量,先來補充一個用以重新定義數據類型的的語句吧。這個語句就是 typedef,這是個很好用的語句,但我卻不常用它,通常我定義
    發表于 12-05 10:22

    C語言單片機第七課 運算符表達式(關系運算符)

    第七課 運算符表達式(關系運算符)關系運算符,同樣我們也并不陌生。單片機C語言中有六種關系運算符,這些東西同樣是在我們小時候學算術時就已經
    發表于 10-21 09:38

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

    關于C語言的運算符表達式學好C語言的基礎運算,還是很有必要,無論在C語言,還是后面單片機,都會用到基礎運算。如果不能很好運用,會給我們編程
    發表于 07-19 00:48

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

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

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

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

    RTL表達式運算符

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

    SystemVerilog-運算符/表達式規則

    RTL建模中廣泛使用的運算符是條件運算符,也稱為三元運算符,該運算符用于在兩個表達式之間進行選擇
    的頭像 發表于 08-03 09:03 ?2384次閱讀

    RTL表達式運算符

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

    RTL表達式運算符

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

    運算符/表達式規則

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

    邏輯運算符表達式

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

    位邏輯運算符表達式

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

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

    注意:自增和自減運算符只能用于變量,而不能用于常量或表達式 **C語言算術表達式運算符的優先級與結合性 ** 在表達式求值時,
    的頭像 發表于 03-09 10:44 ?1324次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>