文章目录

  • 前言
  • 一、单目运算符、双目运算符和三目运算符
  • 二、位运算符
  • 三、逻辑运算符
  • 四、缩减运算符
  • 五、总结

前言

我们在学习和理解Verilog HDL中的一些运算符的意义时,可能会对一些运算符的使用产生混乱,因此本文整理了Verilog HDL中&与&&、|与||、!与~等容易造成误解的运算符的区别。


一、单目运算符、双目运算符和三目运算符

在介绍这几种运算符之间的差别之前需要先介绍一个概念。在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);

最终会得到一个一位宽的逻辑值。


五、总结

在本篇博文中,比较了位运算符、逻辑运算符和缩减运算符的区别,这在Verilog HDL的学习中很容易造成错误。

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

  1. Verilog HDL中阻塞语句和非阻塞语句的区别

    在Verilog中有两种类型的赋值语句:阻塞赋值语句("=")和非阻塞赋值语句("<=").正确地使用这两种赋值语句对于Verilog的设计和仿真非常重要 ...

  2. Verilog HDL中模块参数传递的方法

    文章目录 前言 一.参数传递 二.参数传递方法 1.方法一 2.方法二 3.方法三 总结 前言 "parameter"是Verilog HDL中的一个关键字,代表着参数型常量,即用 ...

  3. (32)Verilog HDL按位运算

    (32)Verilog HDL按位运算 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL按位运算 5)结语 1.2 FPGA简介 FPGA(Fiel ...

  4. (137)FPGA面试题-Verilog HDL中function和task的区别(一)

    1.1 FPGA面试题-Verilog HDL中function和task的区别(一) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-Verilog H ...

  5. (138)FPGA面试题-Verilog HDL中function和task的区别(二)

    1.1 FPGA面试题-Verilog HDL中function和task的区别(二) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-Verilog H ...

  6. 浅谈verilog hdl中parameter的用法

    浅谈verilog hdl中parameter的用法 parameter 1.parameter参数使用 事例1: 事例2: 事例3 事例4 2.defparam使用 事例5 3.parameter与 ...

  7. Verilog HDL中使用系统任务 $readmemh遇到问题及解决方法

    在Verilog HDL程序中有两个系统任务$readmemb和$readmemh,用来从文件中读取数据到存贮器中.这两个系统任务可以在仿真的任何时刻被执行使用,其使用格式共有以下六种: 1) $re ...

  8. Verilog HDL中容易生成锁存器的两种情况

    在Verilog HDL的程序设计中,有两种情况会生成锁存器. 第一种情况 在always块中使用if语句,但是没有else,这会导致当条件不成立时,没有其他语句可执行,使得被赋值的寄存器一直保持不变 ...

  9. Verilog HDL**两位数码管计数器,关于reg位数的问题

    顶层原理图 / count.v module count(input sys_clk,input sys_rst_n,output reg [7:0] data); //累加数parameter MA ...

最新文章

  1. python怎么安装pandas模块-如何优雅的安装Python的pandas?
  2. 定义和使用含有泛型的类
  3. 服务器如何区分多个客户端的信息,如何从服务器向客户端发送已连接客户端的列表,以区分常规消息?...
  4. 这个爱喝酒的酒鬼可真是让人操碎了心
  5. 要想能安心,必须先死心。
  6. Jenkins+maven(testng)项目(本地项目配置)
  7. ChaiNext:过去24小时,市场情绪“燥”
  8. python函数定义及调用-Python函数(函数定义、函数调用)用法详解
  9. 华医网自动答题小脚本软件,并收集答案保存起来
  10. hp笔记本win10无法关闭飞行模式
  11. 【算法题】求有序数列中相邻数字之间的最大差值
  12. StellarWP 收购 LearnDash 学习管理系统
  13. c语言银行信用卡卡管理系统,自编自导多人多卡信用卡管理系统
  14. 关于中部城市人才外流问题的思考
  15. 红米k30s至尊纪念版参数配置
  16. 微信ios版本的两个灰度功能和一些小改变
  17. 微信小程序软键盘回车事件
  18. 哈工大软件构造 复习
  19. 4k电视色彩表现测试软件,高端4K电视? 钱元凯测试图一测便知
  20. css兼容 IE浏览器字号太小

热门文章

  1. Spring MVC拦截器示例
  2. shu函数php,【函数分享】每日PHP函数分享(2021-3-3)
  3. 服务器被一堆系统登录_WIN10做天高服务器客户端登录出现“操作系统原因无法登录”...
  4. MySQL查询结果纵向输出标识符\G
  5. Linux 命令之 w 命令-显示目前登入系统的用户信息
  6. qq html制作,jquery学习练习:制作QQ简易聊天框
  7. sql 非主键每年自增_或许你不知道的 10 条 SQL 技巧
  8. C语言 | 语句概述
  9. 防热服的设计数学建模_全国大学生数学建模和电子设计赛,这所驻青高校获奖山东最多...
  10. 怎么使用starwind部署iscsi_2019 年总结 - 多环境多版本的部署