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

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

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

數(shù)字硬件建模SystemVerilog-按位運(yùn)算符

OpenFPGA ? 來(lái)源:OpenFPGA ? 作者:碎碎思 ? 2022-08-12 14:27 ? 次閱讀

數(shù)字硬件建模SystemVerilog-按位運(yùn)算符

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

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

00f8259a-19ee-11ed-ba43-dac502259ad0.png

介紹

(按)位運(yùn)算符(Bitwise operators)

位運(yùn)算符一次執(zhí)行一位操作,從最右邊的位(最低有效位)向最左邊的位(最高有效位)移動(dòng)。表5-3列出了按位運(yùn)算符功能。

表5-3:RTL建模的位運(yùn)算符
運(yùn)算符 示例用法 描述
~ ~m 將m(1的補(bǔ)碼)的每一位反轉(zhuǎn)
& m&n m和n的每一位相與(AND)
^ m ^ n m與n的每一位相異或(XOR
^~或者~^ m ^~n m和n的每一位相同或
I mIn m和n的每一位相或(OR)

(I代表 | - 或操作)

沒(méi)有位NAND或NOR運(yùn)算符。NAND或NOR操作是分別反轉(zhuǎn)AND或OR操作的結(jié)果,如~(m&n)。需要括號(hào),以便先執(zhí)行AND運(yùn)算。

位運(yùn)算要求兩個(gè)操作數(shù)的向量大小相同。在執(zhí)行操作之前,較小的操作數(shù)將擴(kuò)展以匹配較大操作數(shù)的大小。

(按)位反轉(zhuǎn)

按位反轉(zhuǎn)(Bitwise inversion.)。位反轉(zhuǎn)運(yùn)算符將其單個(gè)操作數(shù)的每一位反轉(zhuǎn),從右向左操作,結(jié)果是操作數(shù)值的一個(gè)補(bǔ)數(shù)。位反轉(zhuǎn)運(yùn)算符是X-pessimistic-反轉(zhuǎn)X或Z值的結(jié)果始終是X。表5-4顯示了位反轉(zhuǎn)的真值表。表中的結(jié)果針對(duì)操作數(shù)的每一位。

表5-4:位反轉(zhuǎn)真值表
~ 結(jié)果
0 1
1 0
X X
Z X

位反轉(zhuǎn)操作的一個(gè)示例結(jié)果是:

0127f2f2-19ee-11ed-ba43-dac502259ad0.png

(按)位AND

按位和(Bitwise AND)。位AND運(yùn)算符對(duì)第一個(gè)操作數(shù)的每一位與第二個(gè)操作數(shù)中的對(duì)應(yīng)位進(jìn)行布爾AND運(yùn)算,從右到左運(yùn)算。位AND運(yùn)算符是X-optimistic:0與任何值的AND運(yùn)算都將得到0。表5-5顯示了位AND的真值表。表中的結(jié)果針對(duì)兩個(gè)操作數(shù)的每一位。

表5-5:位AND真值表
014758ae-19ee-11ed-ba43-dac502259ad0.png

位AND運(yùn)算的一些示例結(jié)果如下:

016a1402-19ee-11ed-ba43-dac502259ad0.png

(按)位OR

按位或(Bitwise OR)。位OR運(yùn)算符對(duì)第一個(gè)操作數(shù)的每一位與第二個(gè)操作數(shù)中的對(duì)應(yīng)位進(jìn)行布爾OR運(yùn)算,從右向左進(jìn)行運(yùn)算。位OR運(yùn)算符是X-optimistic-與任何值進(jìn)行OR運(yùn)算結(jié)果都是1。表5-6顯示了位OR的真值表。

表5-6:位OR真值表
018acc60-19ee-11ed-ba43-dac502259ad0.png

按位OR運(yùn)算的一些結(jié)果示例如下:

01bdb9ae-19ee-11ed-ba43-dac502259ad0.png01d7dabe-19ee-11ed-ba43-dac502259ad0.png

(按)位XOR

按位異或(Bitwise XOR)。位XOR運(yùn)算符對(duì)第一個(gè)操作數(shù)的每一位與第二個(gè)操作數(shù)的對(duì)應(yīng)位進(jìn)行布爾異或XOR運(yùn)算,從右到左進(jìn)行運(yùn)算。按位異或運(yùn)算符為X-pessimistic——對(duì)X或Z值進(jìn)行異或運(yùn)算的結(jié)果始終為X。表5-7顯示了按位異或的真值表。

表5-7:按位異或真值表
01fc2dec-19ee-11ed-ba43-dac502259ad0.png

按位異或運(yùn)算的一些示例結(jié)果如下:

0210b488-19ee-11ed-ba43-dac502259ad0.png

(按)位XNOR

按位XNOR(Bitwise XNOR)。位XNOR運(yùn)算符對(duì)第一個(gè)操作數(shù)的每一位與第二個(gè)操作數(shù)的對(duì)應(yīng)位進(jìn)行布爾XNOR運(yùn)算,從右到左進(jìn)行運(yùn)算。位XNOR運(yùn)算符為X-pessimistic ——對(duì)X或Z值進(jìn)行XNOR運(yùn)算的結(jié)果為X。表5-8顯示了按位XNOR的真值表。

表5-8:按位XNOR真值表
02369482-19ee-11ed-ba43-dac502259ad0.png

按位XNOR運(yùn)算的一些示例結(jié)果如下:

02548870-19ee-11ed-ba43-dac502259ad0.png

示例5-5說(shuō)明了一個(gè)利用按位運(yùn)算符的小型RTL模型。

示例5-5:使用按位運(yùn)算符:多路N位寬和/異或操作
//`begin_keywords"1800-2012"//useSystemVerilog-2012keywords

//User-definedtypedefinitions
packagedefinitions_pkg;
typedefenumlogic{AND_OP,XOR_OP}mode_t;
endpackage:definitions_pkg

//MultiplexedN-bitwidebitwise-ANDorbitwise-XORoperation
moduleand_xor
importdefinitions_pkg::*;
#(parameterN=4)//opsize(default8-bits)
(inputmode_tmode,//1-bitenumeratedinput
inputlogic[N-1:0]a,b,//scalableinputsize
outputlogic[N-1:0]result//scalableoutputsize
);
timeunit1ns;timeprecision1ns;

always_comb
case(mode)
AND_OP:result=a&b;
XOR_OP:result=a^b;
endcase
endmodule:and_xor
//`end_keywords

圖5-5顯示了示例5-5中的RTL模型綜合結(jié)果,如上一節(jié)前面所述,綜合創(chuàng)建的實(shí)現(xiàn)可能受到多個(gè)因素的影響,包括:目標(biāo)設(shè)備、與運(yùn)算符一起使用的任何其他運(yùn)算符或編程語(yǔ)句、使用的綜合編譯器以及指定的綜合選項(xiàng)和約束。

 
圖5-5:示例5-5的綜合結(jié)果:按位AND和OR運(yùn)算
027822a8-19ee-11ed-ba43-dac502259ad0.png

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

    關(guān)注

    28

    文章

    1343

    瀏覽量

    109930
  • 按位運(yùn)算符
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    4779

原文標(biāo)題:(按)位XNOR

文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guā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 ?1428次閱讀
    C語(yǔ)言<b class='flag-5'>運(yùn)算符</b>的使用方法

    【跟我學(xué)單片機(jī)C語(yǔ)言】詳解運(yùn)算符和表達(dá)式的運(yùn)算符

    【跟我學(xué)單片機(jī)C語(yǔ)言】詳解運(yùn)算符和表達(dá)式的運(yùn)算符學(xué)過(guò)匯編的朋友都知道匯編對(duì)位的處理能力是很強(qiáng)的,但是單片機(jī)C語(yǔ)言也能對(duì)運(yùn)算對(duì)象進(jìn)行
    發(fā)表于 12-07 13:51

    2.7 python運(yùn)算符

    ;> a5>>> a -= 2>>> a34. Python運(yùn)算符運(yùn)算符是把數(shù)字看作二進(jìn)制
    發(fā)表于 02-21 16:43

    STM32運(yùn)算運(yùn)算符學(xué)習(xí)記錄

    學(xué)習(xí)過(guò)程中的一些疑問(wèn)記錄一下,方便自己復(fù)習(xí)(多數(shù)內(nèi)容為轉(zhuǎn)載,自己心得部分)STM32學(xué)習(xí)一、運(yùn)算運(yùn)算符(&)參加
    發(fā)表于 02-25 06:21

    數(shù)字硬件建模SystemVerilog-歸約運(yùn)算符

    介紹歸約運(yùn)算符對(duì)單個(gè)操作數(shù)的所有執(zhí)行運(yùn)算,并返回標(biāo)量(1)結(jié)果。表5-9列出了歸約運(yùn)算符。表5-9:RTL
    發(fā)表于 10-20 15:03

    第八課 運(yùn)算符和表達(dá)式(運(yùn)算符)

    學(xué)過(guò)匯編的朋友都知道匯編對(duì)位的處理能力是很強(qiáng)的,但是單片機(jī)C語(yǔ)言也能對(duì)運(yùn)算對(duì)象進(jìn)行操作,從而使單片機(jī)C語(yǔ)言也能具有一定的對(duì)硬件直接進(jìn)行操作的能力。
    發(fā)表于 11-22 12:50 ?656次閱讀

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

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

    移位運(yùn)算符的應(yīng)用實(shí)例講解

    移位運(yùn)算符在程序設(shè)計(jì)中,是操作運(yùn)算符的一種。移位運(yùn)算符可以在二進(jìn)制的基礎(chǔ)上對(duì)數(shù)字進(jìn)行平移。按照平移的方向和填充
    的頭像 發(fā)表于 11-19 07:04 ?3473次閱讀
    移位<b class='flag-5'>運(yùn)算符</b>的應(yīng)用實(shí)例講解

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

    運(yùn)算符: 算術(shù)運(yùn)算符 比較(關(guān)系)運(yùn)算符 賦值運(yùn)算符 邏輯運(yùn)算符
    的頭像 發(fā)表于 02-21 16:44 ?2345次閱讀

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

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

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

    RTL建模中廣泛使用的運(yùn)算符是條件運(yùn)算符,也稱(chēng)為三元運(yùn)算符,該運(yùn)算符用于在兩個(gè)表達(dá)式之間進(jìn)行選擇——表5-2列出了用于表示條件
    的頭像 發(fā)表于 02-09 15:42 ?1300次閱讀
    條件(三元)<b class='flag-5'>運(yùn)算符</b>

    什么是運(yùn)算符

    沒(méi)有NAND或NOR運(yùn)算符。NAND或NOR操作是分別反轉(zhuǎn)AND或OR操作的結(jié)果,如~(m&n)。需要括號(hào),以便先執(zhí)行AND運(yùn)算。
    的頭像 發(fā)表于 02-09 15:44 ?1486次閱讀
    什么是<b class='flag-5'>按</b><b class='flag-5'>位</b><b class='flag-5'>運(yùn)算符</b>

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

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

    Python中運(yùn)算符介紹

    : print(“a《30”) if 4 《= a 《= 30: print(“1《=a《=10”) if 4 《= a a 《= 30”) 3. 運(yùn)算符
    的頭像 發(fā)表于 03-08 17:22 ?1077次閱讀

    C語(yǔ)言中運(yùn)算符的基礎(chǔ)用法

    運(yùn)算符是一組用于在二進(jìn)制數(shù)之間進(jìn)行操作的運(yùn)算符
    發(fā)表于 08-21 14:52 ?489次閱讀
    C語(yǔ)言中<b class='flag-5'>位</b><b class='flag-5'>運(yùn)算符</b>的基礎(chǔ)用法