Verilog HDL语法入门系列(三):Verilog的语言操作符规则(上)
目录
- 1.操作符优先级
- 2.Verilog中的大小(size)与符号
- 3.算术操作符
- 4.按位操作符
- 5.逻辑操作符
- 6.逻辑反与位反的对比
微信公众号获取更多FPGA相关源码:

1.操作符优先级
下表以优先级顺序列出了Verilog操作符。

2.Verilog中的大小(size)与符号
- Verilog根据表达式中变量的长度对表达式的值自动地进行调整。
- Verilog自动截断或扩展赋值语句中右边的值以适应左边变量的长度。
- 当一个负数赋值给无符号变量如reg时,Verilog自动完成二进制补码计算
实例:
module sign_size;reg [3:0] a, b;reg [15:0] c;initial begina = -1; // a是无符号数,因此其值为1111b = 8; c= 8; // b = c = 1000#10 b = b + a; // 结果10111截断, b = 0111#10 c = c + a; // c = 10111end
endmodule
3.算术操作符
integer和reg类型在算术运算中,integer是有符号数,而reg是无符号数。
- 将负数赋值给reg或其它无符号变量使用2的补码算术。
- 如果操作数的某一位是x或z,则结果为x
- 在整数除法中,余数舍弃
- 模运算中使用第一个操作数的符号
四则运算符:
| 符号 | 意义 |
|---|---|
| + | 加 |
| - | 减 |
| * | 乘 |
| / | 除 |
| % | 模 |
实例:
module arithops ();parameter five = 5;integer ans, int;reg [3: 0] rega, regb;reg [3: 0] num;initial beginrega = 3;regb = 4'b1010;int = -3; //int = 1111……1111_1101endinitial fork#10 ans = five * int; // ans = -15#20 ans = (int + 5)/ 2; // ans = 1#30 ans = five/ int; // ans = -1#40 num = rega + regb; // num = 1101#50 num = rega + 1; // num = 0100#60 num = int; // num = 1101#70 num = regb % rega; // num = 1#80 $finish;
join
endmodule
4.按位操作符
| 符号 | 含义 |
|---|---|
| ~ | not |
| & | and |
| or | |
| ^ | xor |
| ~ ^ | xnor |
| ^ ~ | xnor |
按位操作符对矢量中相对应位运算。
regb = 4'b1 0 1 0
regc = 4'b1 x 1 0
num = regb & regc = 1 0 1 0 ;
当两个操作数位数不同时,位数少的操作数零扩展到相同位数。
a = 4'b1011;
b = 8'b01010011;
c = a | b; // a零扩展为 8'b00001011
实例:
module bitwise ();reg [3: 0] rega, regb, regc;reg [3: 0] num;initial beginrega = 4'b1001;regb = 4'b1010;regc = 4'b11x0;endinitial fork#10 num = rega & 0; // num = 0000#20 num = rega & regb; // num = 1000#30 num = rega | regb; // num = 1011#40 num = regb & regc; // num = 10x0#50 num = regb | regc; // num = 1110#60 $finish;join
endmodule
5.逻辑操作符
| 符号 | 含义 |
|---|---|
| ! | not |
| && | and |
| || | or |
- 逻辑操作符的结果为一位1,0或x。
- 逻辑操作符只对逻辑值运算。
- 如操作数为全0,则其逻辑值为false
- 如操作数有一位为1,则其逻辑值为true
- 若操作数只包含0、x、z,则逻辑值为x
逻辑反操作符将操作数的逻辑值取反。例如,若操作数为全0,则其逻辑值为0,逻辑反操作值为1。
实例:
module logical ();parameter five = 5;reg ans;reg [3: 0] rega, regb, regc;initialbeginrega = 4‘b0011; //逻辑值为“1”regb = 4‘b10xz; //逻辑值为“1”regc = 4‘b0z0x; //逻辑值为“x”endinitial fork#10 ans = rega && 0; // ans = 0#20 ans = rega || 0; // ans = 1#30 ans = rega && five; // ans = 1#40 ans = regb && rega; // ans = 1#50 ans = regc || 0; // ans = x#60 $finish;join
endmodule
6.逻辑反与位反的对比
| 符号 | 区别 | 含义 |
|---|---|---|
| ! | logical | not 逻辑反 |
| ~ | bit-wise | not 位反 |
- 逻辑反的结果为一位1,0或x。
- 位反的结果与操作数的位数相同
逻辑反操作符将操作数的逻辑值取反。例如,若操作数为全0,则其逻辑值为0,逻辑反操作值为1。
实例:
module negation();reg [3: 0] rega, regb;reg [3: 0] bit;reg log;initial beginrega = 4'b1011;regb = 4'b0000;endinitial fork#10 bit = ~rega; // num = 0100#20 bit = ~regb; // num = 1111#30 log = !rega; // num = 0#40 log = !regb; // num = 1#50 $finish;join
endmodule
微信公众号获取更多FPGA相关源码:

相关文章:
Verilog HDL语法入门系列(三):Verilog的语言操作符规则(上)
目录 1.操作符优先级2.Verilog中的大小(size)与符号3.算术操作符4.按位操作符5.逻辑操作符6.逻辑反与位反的对比 微信公众号获取更多FPGA相关源码: 1.操作符优先级 下表以优先级顺序列出了Verilog操作符。 2.Verilog中的大小(size)与符号 Verilog根据表达式中变…...
IT营大地老师是谁,怎么什么都会?
很多学员都很好奇大地老师到底是谁,怎么什么都会?每过一段时间就会出一门新课程,涉足深耕不同的领域。经反馈常有童鞋私聊IT营官网客服咨询这个问题,也有很多人在b站大地老师的免费课程里私信,有好奇也有崇拜ÿ…...
【python013】pyinstaller打包PDF提取脚本为exe工具
1.在日常工作和学习中,遇到类似问题处理场景,如pdf文件核心内容截取,这里将文件打包成exe可执行文件,实现功能简便使用。 2.欢迎点赞、关注、批评、指正,互三走起来,小手动起来! 3.欢迎点赞、关…...
VUE div的右上角的角标/标签
一、效果图 二、代码 <div class"comp-overview"><div class"overview-item" v-for"(item,index) in overviewInfoList" :key"index"><div class"angle_mark"><span>{{item.label}}</span>&…...
WPS复制后转置粘贴
1. WPS复制后转置粘贴 复制-》右键-》顶部第一行-》粘贴行列转置,如下图: 2. Excel office365 本地版 2. Excel office365 在线版...
Shell编程之正则表达式与文本处理器
一,正则表达式 1:正则表达式概述 1.正则表达式的定义 正则表达式(Regular Expression,RegEx)是一种高度灵活的文本处理工具,它结合了字符序列、特殊控制字符(称为元字符)、以及特定…...
linux文本粘贴格式错乱的问题
vi/vim :set paste然后再 insert, 粘贴...
第二节课 6月13日 ssh密钥登陆方式
centos和ubuntu openssh服务的初始安装 一、实验:ubuntu系统激活root用户 ubuntu系统如何激活root用户,允许root用户ssh登陆? 1、ubuntu默认root用户未设置密码,未激活 激活root用户,设置root密码 sudo passwd roo…...
图书馆借阅表
DDL 用户表 (Users) 图书表 (Books) 图书类别表 (BookCategories) 图书与类别关联表 (BookCategoryRelations) 借阅记录表 (BorrowRecords) 供应商表 (Suppliers) 采购记录表 (PurchaseRecords) CREATE TABLE Users (user_id INT PRIMARY KEY AUTO_INCREMENT,username …...
云动态摘要 2024-06-25
给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新产品更新 Web应用防火墙 - 验证码支持微信小程序接入 阿里云 2024-06-25 支持客户从微信小程序场景下接入,提供人机识别的安全防护。 工业数字模型驱动引擎 - iDME控制台换新升级 华为云…...
Docker编译nanopc-t4源码流程介绍
官方文档 Android系统编译 vnc加环境变量配置 https://github.com/friendlyarm/docker-cross-compiler-novnc 下载 git clone https://github.com/friendlyarm/docker-ubuntu-lxde-novnc cd docker-ubuntu-lxde-novnc docker build --no-cache -t docker-ubuntu-lxde-novnc …...
Redis八股文目录
Redis缓存穿透-CSDN博客 Redis缓存击穿-CSDN博客 Redis缓存雪崩(主从复制、哨兵模式(脑裂)、分片集群)-CSDN博客 Redis双写一致性-CSDN博客 Redis持久化-CSDN博客 Redis数据过期、淘汰策略-CSDN博客 分布式锁(Re…...
Ext JS+Spring Boot 使用Ajax方式上传文件
实现方式 使用 Ext JS 进行 AJAX 调用以传递文件通常涉及到创建一个 FormData 对象,将文件附加到这个对象中,然后通过 Ext JS 的 AJAX API 发送这个对象。 基本步骤 以下是使用 Ext JS 发送文件的基本步骤: 准备文件和数据: 首先需要获取到要传递的文件 创建 FormData 对…...
windows桌面运维----第九天
1、新的电脑需要安装哪些驱动: 显卡驱动、声卡驱动、主板驱动、网卡驱动、打印机驱动、外设驱动、 2、网络打印机如何开启打印机共享核客户端连接共享打印机: 一、打开控制面板并定位到设备和打印机: 首先,我们在电脑桌面上找…...
【Docker】安装和加速
目录 1.安装 2.了解 docker 信息 3.查询状态 4. 重新启动Docker 1.安装 yum install –y docker 2.了解 docker 信息 cat /etc/redhat-release 3.查询状态 systemctl status docker 4.支持 1.12 的 docker 镜像加速 sudo mkdir -p /etc/docker sudo tee /etc/docke…...
如何关闭win10音量调节时 左上角出现的黑框
目录 1.谷歌浏览器: 2.edge浏览器: 3.没得办法的办法: 4.官方回复: 1.谷歌浏览器: 把这行地址chrome://flags/#hardware-media-key-handling 输入到chrome的地址栏里,回车,把黄色里的Hardwa…...
准确率(accuracy)、召回率(recall)的意义和区别
准确率(accuracy)、召回率(recall)的意义和区别 对于准确率和召回率:一句话,准确率就是“找的对”,召回率就是“找的全” (精确率:正样本中找对的准确率) 注…...
分享5个卫星影像查看网站
我们在《分享5个图源二维码及使用方法》一文中,为你分享了5个图源二维码。 现在再为你为分享5种在线卫星影像,如果你需要更多的图源二维码,请在文末查看领取方式。 MapBox卫星影像 可能很多人都知道MapBox的地名路网地图,但可能…...
37岁,被裁员,失业三个月,被面试官嫌弃“太水”:就这也叫10年以上工作经验?
今年部门要招两个自动化测试,这几个月我面试了几十位候选人。发现一个很奇怪的现象,面试中一问到元素定位、框架api、脚本编写之类的,很多候选人都对答如流。但是一问到实际项目,比如“项目中UI自动化和接口自动化如何搭配使用&am…...
如何选择一款优质的酱香酒?
很多人在评价一款酒的好坏时,往往只关注一个标准:口感是否顺滑。然而,真正品鉴一款酒的品质,首要的是香味,其次是味道,最后才是岁月带来的柔和。这种由岁月赋予的柔和,才能展现出酒的力量感和层…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
