0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

数字硬件建模SystemVerilog-按位运算符

OpenFPGA 来源:OpenFPGA 作者:碎碎思 2022-08-12 14:27 次阅读

数字硬件建模SystemVerilog-按位运算符

经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。

马上HDLBits-SystemVerilog版本也开始准备了,基本这一部分完成后就开始更新~

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

介绍

(按)位运算符(Bitwise operators)

位运算符一次执行一位操作,从最右边的位(最低有效位)向最左边的位(最高有效位)移动。表5-3列出了按位运算符功能。

表5-3:RTL建模的位运算符
运算符 示例用法 描述
~ ~m 将m(1的补码)的每一位反转
& m&n m和n的每一位相与(AND)
^ m ^ n m与n的每一位相异或(XOR
^~或者~^ m ^~n m和n的每一位相同或
I mIn m和n的每一位相或(OR)

(I代表 | - 或操作)

没有位NAND或NOR运算符。NAND或NOR操作是分别反转AND或OR操作的结果,如~(m&n)。需要括号,以便先执行AND运算。

位运算要求两个操作数的向量大小相同。在执行操作之前,较小的操作数将扩展以匹配较大操作数的大小。

(按)位反转

按位反转(Bitwise inversion.)。位反转运算符将其单个操作数的每一位反转,从右向左操作,结果是操作数值的一个补数。位反转运算符是X-pessimistic-反转X或Z值的结果始终是X。表5-4显示了位反转的真值表。表中的结果针对操作数的每一位。

表5-4:位反转真值表
~ 结果
0 1
1 0
X X
Z X

位反转操作的一个示例结果是:

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

(按)位AND

按位和(Bitwise AND)。位AND运算符对第一个操作数的每一位与第二个操作数中的对应位进行布尔AND运算,从右到左运算。位AND运算符是X-optimistic:0与任何值的AND运算都将得到0。表5-5显示了位AND的真值表。表中的结果针对两个操作数的每一位。

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

位AND运算的一些示例结果如下:

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

(按)位OR

按位或(Bitwise OR)。位OR运算符对第一个操作数的每一位与第二个操作数中的对应位进行布尔OR运算,从右向左进行运算。位OR运算符是X-optimistic-与任何值进行OR运算结果都是1。表5-6显示了位OR的真值表。

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

按位OR运算的一些结果示例如下:

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

(按)位XOR

按位异或(Bitwise XOR)。位XOR运算符对第一个操作数的每一位与第二个操作数的对应位进行布尔异或XOR运算,从右到左进行运算。按位异或运算符为X-pessimistic——对X或Z值进行异或运算的结果始终为X。表5-7显示了按位异或的真值表。

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

按位异或运算的一些示例结果如下:

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

(按)位XNOR

按位XNOR(Bitwise XNOR)。位XNOR运算符对第一个操作数的每一位与第二个操作数的对应位进行布尔XNOR运算,从右到左进行运算。位XNOR运算符为X-pessimistic ——对X或Z值进行XNOR运算的结果为X。表5-8显示了按位XNOR的真值表。

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

按位XNOR运算的一些示例结果如下:

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

示例5-5说明了一个利用按位运算符的小型RTL模型。

示例5-5:使用按位运算符:多路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模型综合结果,如上一节前面所述,综合创建的实现可能受到多个因素的影响,包括:目标设备、与运算符一起使用的任何其他运算符或编程语句、使用的综合编译器以及指定的综合选项和约束。

 
图5-5:示例5-5的综合结果:按位AND和OR运算
027822a8-19ee-11ed-ba43-dac502259ad0.png

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    28

    文章

    1333

    浏览量

    109758
  • 按位运算符
    +关注

    关注

    0

    文章

    3

    浏览量

    4773

原文标题:(按)位XNOR

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C语言运算符的使用方法

    详细介绍了C语言表达式、算术运算符、赋值运算符、关系运算符、条件结构、逻辑运算符运算符的语法
    发表于 11-02 11:30 1021次阅读
    C语言<b class='flag-5'>运算符</b>的使用方法

    【跟我学单片机C语言】详解运算符和表达式的运算符

    【跟我学单片机C语言】详解运算符和表达式的运算符学过汇编的朋友都知道汇编对位的处理能力是很强的,但是单片机C语言也能对运算对象进行
    发表于 12-07 13:51

    2.7 python运算符

    ;> a5>>> a -= 2>>> a34. Python运算符运算符是把数字看作二进制
    发表于 02-21 16:43

    STM32运算运算符学习记录

    学习过程中的一些疑问记录一下,方便自己复习(多数内容为转载,自己心得部分)STM32学习一、运算运算符(&)参加
    发表于 02-25 06:21

    数字硬件建模SystemVerilog-归约运算符

    介绍归约运算符对单个操作数的所有执行运算,并返回标量(1)结果。表5-9列出了归约运算符。表5-9:RTL
    发表于 10-20 15:03

    第八课 运算符和表达式(运算符)

    学过汇编的朋友都知道汇编对位的处理能力是很强的,但是单片机C语言也能对运算对象进行操作,从而使单片机C语言也能具有一定的对硬件直接进行操作的能力。
    发表于 11-22 12:50 614次阅读

    单目运算符是什么_单目运算符有哪些

    单目运算符是指运算所需变量为一个的运算符,又叫一元运算符,其中有逻辑非运算符:!、
    的头像 发表于 02-24 15:42 6w次阅读
    单目<b class='flag-5'>运算符</b>是什么_单目<b class='flag-5'>运算符</b>有哪些

    移位运算符的应用实例讲解

    移位运算符在程序设计中,是操作运算符的一种。移位运算符可以在二进制的基础上对数字进行平移。按照平移的方向和填充
    的头像 发表于 11-19 07:04 3404次阅读
    移位<b class='flag-5'>运算符</b>的应用实例讲解

    python运算符是什么

    运算符: 算术运算符 比较(关系)运算符 赋值运算符 逻辑运算符
    的头像 发表于 02-21 16:44 2226次阅读

    SystemVerilog-运算符/表达式规则

    RTL建模中广泛使用的运算符是条件运算符,也称为三元运算符,该运算符用于在两个表达式之间进行选择——表5-2列出了用于表示条件
    的头像 发表于 08-03 09:03 2872次阅读

    条件(三元)运算符

    RTL建模中广泛使用的运算符是条件运算符,也称为三元运算符,该运算符用于在两个表达式之间进行选择——表5-2列出了用于表示条件
    的头像 发表于 02-09 15:42 1242次阅读
    条件(三元)<b class='flag-5'>运算符</b>

    什么是运算符

    没有NAND或NOR运算符。NAND或NOR操作是分别反转AND或OR操作的结果,如~(m&n)。需要括号,以便先执行AND运算
    的头像 发表于 02-09 15:44 1431次阅读
    什么是<b class='flag-5'>按</b><b class='flag-5'>位</b><b class='flag-5'>运算符</b>

    什么是移位运算符

    移位运算符将向量的向右或向左移位指定的次数。SystemVerilog具有和算术移位运算符
    的头像 发表于 02-09 15:49 1704次阅读
    什么是移位<b class='flag-5'>运算符</b>

    Python中运算符介绍

    : print(“a《30”) if 4 《= a 《= 30: print(“1《=a《=10”) if 4 《= a a 《= 30”) 3. 运算符
    的头像 发表于 03-08 17:22 1026次阅读

    C语言中运算符的基础用法

    运算符是一组用于在二进制数之间进行操作的运算符
    发表于 08-21 14:52 450次阅读
    C语言中<b class='flag-5'>位</b><b class='flag-5'>运算符</b>的基础用法