Verilog HDL按位逻辑运算符及逻辑运算符

这篇具有很好参考价值的文章主要介绍了Verilog HDL按位逻辑运算符及逻辑运算符。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、按位逻辑运算符

1.单目按位与(&)

单目按位与运算符 &,运算符后为需要进行逻辑运算的信号,表示对信号进行每位之间相与的操作。例如:
reg [3:0] A,C ;
assign C = &A ;

上面代码等价于 C = A[3] & A[2] & A[1] & A[0] ;
如果A = 4’b0110,C的结果为0

2.单目按位或(|)

单目按位或运算符 |,运算符后为需要进行逻辑运算的信号,表示对信号进行每位之间相或的操作。例如:
reg [3:0] A,C ;
assign C = |A ;

上面代码等价于C = A[3] | A[2] | A[1] | A[0] ;
如果A = 4’b0110,C的结果为1

3.单目按位非(~)

单目按位非运算符 ~,运算符后为需要进行逻辑运算的信号,表示对信号进行每位取反的操作。例如:
reg [3:0] A,C ;
assign C = ~A ;

上面的代码等价于C[3] = ~A[3],C[2] = ~A[2],C[1] = ~A[1],C[0] = ~A[0]。
如果A = 4’b0110,C的结果为4’b1001

4.双目按位与(&)

双目按位与运算符 &,信号位于运算符的左右两边,表示的是对这两个信号进行对应位相与的操作。

例如:
reg [3:0] A,B,C;
assign C = A & B;

上面的代码等价于:C[0] = A[0] & B[0],C[1] = A[1] & B[1],C[2] = A[2] & B[2],C[3] = A[3] & B[3]。如果A=4’b0110,B=4’b1010,C的结果为4’b0010。

如果操作数长度不相等,长度较小的操作数在最左侧补0。例如:
reg [1:0] A;
reg [2:0] B;
reg [3:0] C;
assign C = A & B;

上面的代码等价于:C[0] = A[0] & B[0],C[1] = A[1] & B[1],C[2] = 0 & B[2],C[3] = 0 & 0

5.双目按位或(|)

双目按位或运算符 |,信号位于运算符的左右两边,表示的是对这两个信号进行对应位相或的操作。

例如:
reg [3:0] A,B,C;
assign C = A | B;

上面的代码等价于:C[0] = A[0] | B[0],C[1] = A[1] | B[1],C[2] = A[2] | B[2],C[3] = A[3] | B[3]。如果A=4’b0110,B=4’b1010,C的结果为4’b1110。

如果操作数长度不相等,长度较小的操作数在最左侧补0。例如:
reg [1:0] A;
reg [2:0] B;
reg [3:0] C;
assign C = A | B;

上面的代码等价于:C[0] = A[0] | B[0],C[1] = A[1] | B[1],C[2] = 0 | B[2],C[3] = 0 | 0

6.双目按位异或(^)

双目按位异或运算符 ^,信号位于运算符的左右两边,表示的是对这两个信号进行对应位相异或的操作。异或是指0 ^ 0 = 0,1 ^ 1 = 0,0 ^ 1 = 1。即相同为0,不同为1。

例如:
reg [3:0] A,B,C;
assign C = A ^ B;

上面的代码等价于:C[0] = A[0] ^ B[0],C[1] = A[1] ^ B[1],C[2] = A[2] ^ B[2],C[3] = A[3] ^ B[3]。如果A=4’b0110,B=4’b1010,C的结果为4’b1100。

如果操作数长度不相等,长度较小的操作数在最左侧补0。例如:
reg [1:0] A;
reg [2:0] B;
reg [3:0] C;
assign C = A ^ B;

上面的代码等价于:C[0] = A[0] ^ B[0],C[1] = A[1] ^ B[1],C[2] = 0 ^ B[2],C[3] = 0 ^ 0

二、逻辑运算符和位运算符区别

逻辑运算符包括&&,||,!,位运算符包括&,|,~。
(作者这里解释一下,没有讲述逻辑运算符是因为逻辑运算符和在例如C语言当中用法完全一样,学习Verilog的小伙伴们一定有其他语言的基础,所以不再过多赘述逻辑运算符)

二者区别我们不妨举例,将逻辑与“&&”和按位与“&”进行对比,逻辑与运算符的运算只有逻辑真或逻辑假两种结果,即1或0;而“&”是位运算符,多用于两个多位宽数据操作。
对比示例:
assign a = 4’b0111 && 4’b1000;
assign b = 4’b0111 || 4’b1000;
assign c = !4’b0111;
assign d = 4’b0111 & 4’b1000;
assign e = 4’b0111 | 4’b1000;
assign f = ~4’b0111;

示例运行结果为:
a = 1’b1
b = 1’b1
c = 1’b0
d = 4’b0000
e = 4’b1111
f = 4’b1000文章来源地址https://www.toymoban.com/news/detail-601046.html

到了这里,关于Verilog HDL按位逻辑运算符及逻辑运算符的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA设计Verilog基础之Verilog的运算符

    注意:后续技术分享,第一时间更新,以及更多更及时的技术资讯和学习技术资料 ,将在公众号 CTO Plus 发布,请关注公众号: CTO Plus FPGA设计Verilog基础之Verilog的运算符 Verilog是一种硬件描述语言,支持多种运算符,包括算术运算符、比较(关系)运算符、逻辑运算符、条件

    2024年02月03日
    浏览(50)
  • Verilog运算符优先级

    0 ! ~ 1 * / % 2 + 1 3 4 = = 5 == != === !== 6 ~ 7 ^ ^~ 8 | ~| 9 10 || 11 ?: 从上至下优先级依次降低

    2024年02月16日
    浏览(37)
  • Verilog基本语法之运算符(三)

    运算符按功能分为9类: 算术运算符 逻辑运算符 关系运算符 等式运算符 缩减运算符 条件运算符 位运算符 移位运算符 位拼接运算符 运算符按操作数的个数分为3类: 单目运算符:带一个操作数 逻辑非!,按位取反~,缩减运算符,移位运算符 双目运算符:带两个操作数 算

    2023年04月09日
    浏览(41)
  • Verilog常用运算符及表达式

    本文详细介绍了Verilog常用的运算符和表达式,特别是分享了处理“计算位宽溢出”和“负数”的可行方式,帮助读者更加轻松地理解和掌握Verilog语言的运算符。 算数运算符:加(+)、减(-)、乘(*)、除(/)、取余(%) 赋值运算符:非阻塞赋值(=)、阻塞赋值(=);

    2024年02月08日
    浏览(56)
  • Verilog语法——2.模块例化、运算符

    参考资料 【明德扬_verilog零基础入门语法HDL仿真快速掌握-手把手教你写FPGA/ASIC代码设计流程中的应用】 2.1.1 什么是模块例化 例化,即将项目不断拆分成次级功能模块,然后从最简单的模块开始实现,进而完成整个复杂项目 2.1.2 模块例化的方法 针对已经抽象好的模块,需要

    2024年01月16日
    浏览(43)
  • Verilog学习记录3——三目运算符

    进阶示例: 以牛客网 VL1 四选一多路器 为例 使用三目运算符写法:

    2024年02月11日
    浏览(60)
  • Verilog基础:仿真时x信号的产生和x信号对于各运算符的特性

    相关阅读 Verilog基础 https://blog.csdn.net/weixin_45791458/category_12263729.html?spm=1001.2014.3001.5482         信号爆x也许是所有IC人的噩梦,满屏的红色波形常让人头疼不已,但x信号的产生原因却常常只有几种,只要遵循一定的代码规范,就可以避免产生信号中出现x的问题。         最常

    2024年02月05日
    浏览(52)
  • 双重按位非运算符 ~~ 对数字取整

    介绍 按位非运算符( ~ )将操作数的位反转。 它将操作数转化为 32 位的有符号整型 。也就是可以对数字进行取整操作(保留整数部分,舍弃小数部分)。 并且按位非运算时,任何数字  x (已被转化为 32 位有符号整型) 的运算结果都是  -(x + 1) 。 那么双重按位非( ~~ )

    2024年02月19日
    浏览(38)
  • 硬件描述语言(HDL)基础——运算符

    任务描述 本关任务:采用硬件描述语言对输入信号a和b进行按位或(out_or_bitwise)和逻辑或(out_or_logical)运算。此外,再将a和b按位取反,其中a取反后的结果作为out_not的低半部分,b取反后的结果作为out_not的高半部分。 知识点 为了完成本关任务,需要掌握的知识点如下: 位运

    2023年04月13日
    浏览(44)
  • 【JavaScript】JavaScript 运算符 ④ ( 逻辑运算符 | 逻辑与运算符 && | 逻辑或运算符 || | 逻辑非运算符 ! )

    JavaScript 中的 逻辑运算符 的作用是 对 布尔值 进行运算 , 运算完成 后 的 返回值 也是 布尔值 ; 逻辑运算符 的 使用场景 : 条件控制语句 , 控制程序分支 ; 循环控制语句 , 控制程序循环 ; 逻辑 运算符 列举 : : 逻辑与运算 , 两个操作数都为 true , 最终结果才为 true , 只要有一个操

    2024年03月20日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包