[Verilog HDL]

Verilog HDL中位运算符、逻辑运算符和缩减运算符的区别

[复制链接]
2794|0
手机看帖
扫描二维码
随时随地手机跟帖
gaochy1126|  楼主 | 2023-11-30 20:50 | 显示全部楼层 |阅读模式
一、单目运算符、双目运算符和三目运算符
在介绍这几种运算符之间的差别之前需要先介绍一个概念。在Verilog HDL中运算符被分为3种,单目运算符、双目运算符和三目运算符。
1、单目运算符就是运算符只有右边有一个操作数。
例如: a = ~2’b01 ==> a = 2’b10;
2、双目运算符则要求运算符两侧各有一个操作。
例如: a = 2’b01 | 2’b11 ==> a = 2’b11;
3、三目运算符则要求运算符有三个操作数。
例如: out = sel ? a : b;
二、位运算符
运算符&、| 和 ~ 都是位运算符,当然了,还包括按位异或运算符^ 和按位同或运算符 ^~。在本篇文章中,主要介绍的前三种,也为了说明它们和逻辑运算符的区别。
这三个运算符都是按位操作,原操作数位宽为几位,运算结束之后还是几位。
例如:
a = 2’b01 & 2’b11 ==> a = 2’b01;
a = 2’b01 | 2’b11 ==> a = 2’b11;
a = ~2’b01 ==> a = 2’b10;
三、逻辑运算符
逻辑与 &&
逻辑或 ||
逻辑非 !
逻辑运算符和上面介绍的位运算符最大的区别就是输出结果是一个逻辑结果,是一位的,如果是”1“就代表逻辑”真“,如果是”0“就代表逻辑”假“。
例如:
log = (x>y)&&(a<b); ==> 若真,则 log=1;若假,则 log=0;
log = (x>y)||(a<b);
log = !(x>y);
四、缩减运算符
还有一种运算符,它们和位运算符十分相像,但是使用的方式却不一样,它们就是缩减运算符,也是一种单目运算符,它们包括&、|、&、|、^ 和 ~^。
例如:out = & 4’b0101; ==> out = ((( 1’b0 & 1’b1) & 1’b0) & 1’b1);
最终会得到一个一位宽的逻辑值。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1025

主题

11271

帖子

25

粉丝