FPGA开发——verilog的运算符以及相关优先级的介绍

news2025/1/11 10:07:20

一、简介

        在我们学习任何一门编程语言时,不可避免的都会遇见运算符和相关的运算优先级的问题,只有掌握了各个运算符的优先级关系我们才能进行更好的代码编写。在前面的时候因为我没有遇到因为优先级而导致的工程结果错误,所以没有过多注意,但是遇到之后才发现运算符优先级的重要性。

二、verilog运算符

在verilog语言中也有属于它的特殊运算符,今天我们就来看看verilog的运算符。

1、基本运算符

在Verilog 语言中,也是和其他编程语言一样拥有下面这几个基本操作符,同时也是我们最为常见的运算符:
(1)+ (加法运算符)
示例:assign Y = A + B ; //将A与B相加,计算结果赋值给Y
(2)- (减法运算符)
示例:assign Y = A - B; //将A的值减去B的值,计算结果赋值给Y
(3)* (乘法运算符)
示例:assign Y = A * B;//将A与B乘积的结果赋值给Y
(4)/ (除法运算符)
示例:assign Y = A / B; //将变量A的值除以B结果赋值给Y
(5)% (模运算符, 或者称为求余运算符,要求%两侧均为整型数据,例如7%3的值为1)

2、位运算符

(1)取反运算符 ~ :
assign Y = ~A;//若A = 4’b1011; 则Y的值为4’b0100, 即按照每个bit位进行取反操作。

(2)按位与操作 & :
assign Y = A & B; //若A的值为4’b1011, B的值为4’b0101, 则Y的值为4’b0001

(3)按位或操作 | :
assign Y = A | B; //若A的值为4’b1011, B的值为4’b0101, 则Y的值为4’b1111

(4)按位异或 ^ :
assign Y = A ^ B;//若A的值为4’b1011, B的值为4’b0101, 则Y的值为4’b1110

(5)按位同或 ^~
assign Y = A ^~ B;//若A的值为4’b1011, B的值为4’b0101, 则Y的值为4’b0001

在这里我们需要特别注意的是~、&、|和 !、&&、||操作的相关区别,因为在编程当中我们会经常使用这些操作 

3、关系运算符

          Verilog 语法中表示关系运算的有:大于(>); 小于(<); 大于等于(>=); 小于等于(<=)这里的用法和C语言等的使用方法一样,这里就不展开说了。

4、逻辑运算符

Verilog 语法中的逻辑运算符也是我们所熟知的 逻辑与(&&), 逻辑或(||), 逻辑非(!)三个基本运算符。在这里我们针对的是表达式的逻辑正确与否进行编写的,最终的结果只能是0或1,而在位运算符中的~、&、|是根据数据的每个位进行操作的,只有当操作的变量为1位时,两种运算符的结果相等。掌握这6个运算符的区别可以使我们编程的结果更加准确。

5、移位运算符

        移位运算符是二元运算符,左移符号为“<<”,右移符号为“>>”,将运算符左边的操作数左移或右移指定的位数,用 0 来补充空闲位。如果右边操作数的值为 x 或 z,则移位结果为未知数 x。在应用以为运算符的时候一定要注意它的这个特性,那就是空闲位用 0来填充,也就是说,一个二进制数不管原数值是多少,只要一直移位,最终全部会变为0。

        用最好理解的方法来说,将一个数据进行左右移操作就是将这个数据进行乘除操作,左移1位就是×2,右移1位就是÷2。和乘除运算实现的结果一样,唯一的区别就是和乘除运算符的优先级不一样。乘除运算符优先级高于移位运算符。

6、拼接运算符

         在Verilog HDL语言中有1个特殊的运算符:位拼接运算符 {} ,用这个运算符可以把两个或者是多个信号的某些位拼接起来进行运算操作。 使用拼接运算符我们不仅可以实现拼接的功能,还能实现赋值、循环移位等功能,这些都是我们在代码编写时常用的功能

实例:

拼接功能:Y={a[1],b[2],c[0]};这里假设Y是三位变量,a[1]=1,b[2]=0,c[0]=3;那么最后Y的结果就是103。

复制功能:Y={8'{1'b1}};这里假设Y是8位变量,就是将1'b1的值复制到Y的8个位置。

循环移位功能:Y={a[6:0],a[7]};这里假设Y是8位变量,最终实现的结果就是将a的值进行一个向左的循环移位功能,可以用于LED流水灯,数码管位选等操作。

7、条件运算符

        如果在条件语句中,只执行单个的赋值语句时,用条件表达式会更方便。条件运算符
为“ ? : ”,它是一个三元运算符,即有三个参与运算的量。
由条件运算符组成的条件表达式的一般形式为:表达式 1 ? 表达式 2 : 表达式 3
执行过程是:当表达式 1 为真,则表达式 2 作为条件表达式的值,否则以表达式 3 作
为条件表达式的值。例如:当 a = 6, b = 7,条件表达式(a > b) ? a : b 的结果为 7。

三、运算符优先级

        我们在进行多种类型运算符混合使用时,一定要特别注意运算符之间的优先级关系,不然就算编译不会报错,我们的结果也会出错。像使用乘除、加减和移位运算符时,我们要将移位运算符使用一个括号,不然就会先执行乘除,再执行加减,最后才执行移位,这样就会造成结果出错。

例如:a=b/2+c>>1,这就是一个错误的写法,我们想要计算的是b/2+c/2的值,但是因为移位运算符优先级没有加法的高,所以会先计算b/2+c,最后将这个结果进行移位计算,所得到的结果就会出错。正确的写法应该是a=b/2+(c>>1)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2065080.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

振兴杯全国青年职业技能大赛职业技能标准——物联网安装调试员

一、大赛概述 1.1 振兴杯全国青年职业技能大赛简介 振兴杯全国青年职业技能大赛是一项国家级的职业技能竞赛&#xff0c;自2005年首届大赛成功举办以来&#xff0c;已逐渐成为国内规模最大、影响力最广的青年职业技能竞赛之一。这项竞赛旨在推动青年技能人才的培养和发展&…

软件测试面试题与经验分享【附文档】

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 测试技术面试题 1、什么是兼容性测试&#xff1f;兼容性测试侧重哪些方面&#xff1f; 参考答案&#xff1a; 兼容测试主要是检查软件在不同的硬件平台、软…

黄金市场波动加剧美联储降息预期与数据修正共舞

美联储鸽派信号提振金价 周四亚市盘中&#xff0c;现货黄金价格突然加速回落&#xff0c;逼近2500美元/盎司关键支撑位&#xff0c;日内重挫逾10美元。尽管如此&#xff0c;美联储周三发布的鸽派会议纪要显示&#xff0c;政策制定者普遍倾向于9月降息&#xff0c;为金价提供了…

linux系统,ubuntu安装英伟达NVIDIA4090显卡驱动

文章目录 前言下载英伟达NVIDIA官方驱动安装NVIDIA驱动远程安装关闭交互界面设置权限&#xff08;自己确认版本号5&#xff09;安装&#xff08;自己确认版本号5&#xff09;打开交互界面&#xff0c;并重启系统验证是否安装成功 异常处理问题1问题2问题3&#xff08;可能没解决…

docker手动部署django项目Dockerfile编排-后端发布

1、首先创建一个桥接网络 docker network create auto 2、部署redis,提供celery的消息队列服务 docker run --name redis --restartalways -d --network auto -v redis:/data redis:alpine3、部署数据库 注意数据库账号密码 docker run --name mariadb --restartalways -d…

vue3+ts+vant4 列表下拉刷新+分页加载

效果图 主要代码&#xff1a; <van-pull-refreshv-model"refreshing"refresh"handleRefresh"pulling-text"下拉释放刷新"loosing-text"下拉释放刷新"loading-text"加载中"><van-listv-model:loading"loading…

DDD精粹速读(一)

1 你需要知道的 - 战略设计 DDD是一种软件设计和构建方法&#xff0c;其重点在于独立于数据持久化等技术问题&#xff0c;准确表达业务规则。 不幸&#xff0c;DDD 对新手来说极具挑战性&#xff0c;部分原因是它有许多独特的概念需要学习。本文我简要介绍这些重要的思想&…

数学建模比赛(国赛)水奖攻略

之前很多同学私聊问我&#xff0c;学校要求参加数模比赛&#xff0c;但是不擅长建模编程&#xff0c;但又不想浪费这个时间该怎么办呢&#xff0c;今天就来给大家讲一下大家都非常感兴趣的内容——数学建模水奖攻略。分享一下博主直接参加比赛时候的经验。 一、选题技巧 有一句…

【QT】学习笔记:关于“初始化列表中的成员变量”

一、问题1 以下代码是什么意思&#xff1f; MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) , ui(new Ui::MainWindow) {ui->setupUi(this); }MainWindow::~MainWindow() {delete ui; } 好的&#xff0c;我来为你解释这段 Qt 代码&#xff1a; 整体概述…

Linux(面试篇)

目录 什么是Linux 什么是Linux内核&#xff1f; Linux的基本组件是什么&#xff1f; Bash和Dos之间基本区别是什么&#xff1f; 什么是Root账户 什么是Bash? 什么时CLI? Linux的目录结构时怎样的&#xff1f; 什么是硬链接和软链接&#xff1f; 什么叫CC攻击&#…

景联文科技:专业人像采集服务,助力人像采集在多领域应用

随着社会的数字化和智能化进程不断推进&#xff0c;人像采集在多个领域中扮演着至关重要的角色&#xff0c;不仅可以提升安全性&#xff0c;还为人们的日常生活带来了更多的便捷。 应用场景&#xff1a; 1. 身份验证与生物识别&#xff1a; 机场、火车站等交通枢纽的身份核验…

docker具体操作

安装docker : 前提 centos 7 64位 centos内核版本3.10以上 1 uname -r 查看内核 2 yum install -y yum-utils device-mapper-persistent-data lvm2 下载依赖包 3 um-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.re…

AI模拟器

一、介绍 基于鸿蒙Next模拟一个ai对话过程二、场景需求 客户服务、数据分析、个性化推荐、图像和视频处理、智能家居、交通管理、教育行业、制造等等。 三、业务步骤 第一步&#xff1a;输入框提出问题&#xff0c;发送问题&#xff0c; 第二部&#xff1a;下次发送&#xff0…

实现BeanPostProcessor

文章目录 1.实现初始化方法1.目录2.InitializingBean.java3.MonsterService.java 实现初始化接口4.SunSpringApplicationContext.java 调用初始化方法5.测试 2.实现后置处理器1.目录2.BeanPostProcessor.java 后置处理器接口3.SunBeanProcessor.java 自定义后置处理器4.SunSpri…

萌啦数据怎么选品,萌啦数据ozon选品怎么选

在当今电商领域&#xff0c;数据已成为商家决策的重要基石。尤其是在跨境电商的广阔舞台上&#xff0c;如何借助数据分析工具精准选品&#xff0c;直接关系到商家在激烈竞争中的生存与发展。萌啦数据&#xff0c;作为业界知名的电商数据分析平台&#xff0c;凭借其强大的数据整…

DHCP协议-CSP认证

文章目录 DHCP协议 DHCP协议 stringstream的用法 应用实践 #include<bits/stdc.h>using namespace std;signed main() {string s"wo shi wwl, also wlw";stringstream ss;ss<<s;while(ss>>s){if(s[s.size()-1],) s[s.size()-1] ;cout<<s<…

128-域横向移动IPCATSC命令Impacket套件CS插件全自动

因为只有一台云服务器而且开不起台多的虚拟机只能只用几台进行演示&#x1f62d;&#x1f62d;&#x1f62d; 小迪的环境 上线之后先做的事情&#xff1a; IPC方式进行横向移动 at schtasks 他这里第三条命令有问题换成这个可以执行 schtasks /create /s 172.16.3.128 /U a…

证书学习(二)搞懂 keystore、jks、p12、pfx、crt、csr、pem文件的区别

目录 一、背景二、文件格式的区分2.1 .keystore / .jks 文件2.2 .p12 / .pfx 文件2.3 .crt 文件2.4 csr 文件2.5 .pem 文件 三、总结 一、背景 我们在日常的开发过程中&#xff0c;经常会见到各种各样的证书相关类型的文件&#xff0c;错综复杂。 其实 keystore、jks、p12、p…

濮阳示范区党工委书记杨行玉一行莅临超维机器人参观考察

8月20日&#xff0c;濮阳示范区党工委书记杨行玉带队赴郑州开展招商活动&#xff0c;并莅临超维机器人参观考察。此次考察旨在加快濮阳示范区产业升级步伐&#xff0c;推动高科技项目引进和落地&#xff0c;为区域经济高质量发展注入新动能。区三级调研员张立春、区招商局负责人…

外挂系统 -减少SAP用户许可数, 多点操作及时同步SAP

用过SAP 的人都知道SAP 是按照用户数来计算项目费用和年维护费的,所以很多公司设置了共同账号,外挂程序,WDA程序等,各种各样的规避方式。 当然SAP 标准的功能也相对简单化,要实现一些自定义的功能来满足各企业实际业务,那需要进行二次开发,有些顾问公司则通过在SAP 中开…