当前位置: 首页 > news >正文

【Verilog】运算符

系列文章

数值(整数,实数,字符串)与数据类型(wire、reg、mem、parameter)


  • 系列文章
  • 算术运算符
  • 关系运算符
  • 相等关系运算符
  • 逻辑运算符
  • 按位运算符
  • 归约运算符
  • 移位运算符
  • 条件运算符
  • 连接和复制运算符


算术运算符

Verilog HDL中常用的算术运算符主要有五种,分别是加法(+)、减法(-)、乘法(*)、除法(/)和取模(%)。

算术操作结果的位宽。 算术表达式结果的长度由最长的操作数决定。 在赋值语句下,算术操作结果的长度由操作左端的目标长度决定。


关系运算符

关系运算符也是双目运算符,是对两个操作数的大小进行比较。关系运算符有大于(>)、小于(<)、大于等于(>=)和小于等于(<=)几种。

在进行关系比较时,如果成立则结果为“1”,否则返回的结果为“0”;若不确定则返回结果为不定值(x)。例如:10>15的结果为假(0),20>18的结果为真(1),而4’b1101<4’hx的结果为不定值(x)。


相等关系运算符

相等关系运算符是对两个操作数进行比较,比较的结果有三种:真(1)、假(0)和不定值(x)。Verilog HDL语言中有四种相等关系运算符:等于( == )、不等于( != )、全等(===)、非全等(! ==)。

“==”和“!=”称为逻辑等式运算符,其结果由两个操作数的值决定。

“ === ”和“ !== ”运算符则不同,它是对操作数进行按位比较,两个操作数必须完全一致,其结果才是1,否则为0。但是,若两个操作数对应位出现不定值x和高阻值z,则可认为是相同的。“ ===”和“!==”运算符常用于case表达式的判别,所以又称为“case等式运算符”。


逻辑运算符

逻辑运算符有三种,分别是逻辑与运算符(&&)、逻辑或运算符(||)、逻辑非运算符(!)。其中逻辑与和逻辑或是双目运算符,逻辑非为单目运算符。

逻辑运算符的操作数只能是逻辑0或者逻辑1。

三种逻辑运算符的真值表如下所示:

在这里插入图片描述

在逻辑运算符的操作过程中,如果操作数是1位的,那么1就代表逻辑真,0就代表逻辑假;如果操作数是由多位组成的,则当操作数每一位都是0时才是逻辑0值,只要有某一位为1,这个操作数就是逻辑1值。例如:寄存器变量a、b的初值分别为4’b1110和4’b0000,则 !a=0,!b=1,a&&b=0;a||b=1。

需注意的是,若操作数中存在不定态x,则逻辑运算的结果也是不定态,例如:a的初值为4’b1100,b的初值为4’b01x0,则 !a=0,!b=x,a&&b=x,a||b=x。


按位运算符

数字逻辑电路中,信号与信号之间的运算称为位运算。Verilog HDL提供了以下五种类型的位运算符:按位取反(**)、按位与(&)、按位或(**|**)、按位异或(**^**)、按位同或(**^)。

按位运算举例:

module bit_tb;reg[2:0]a;reg[4:0]b;initialbegina=5'b101;//运算的时候a自动变为5'b00101b=5'b11101;$display("%b",~a);//结果为3'b010$display("%b",~b);//结果为5'b00010$display("%b",a&b);	//结果为5'b00101 $display("%b",a|b); //结果为5'b11101$display("%b",a^b);	//结果为5'b11000          end
endmodule

归约运算符

归约运算符按位进行逻辑运算,属于单目运算符。由于这一类运算符操作的结果是产生1位逻辑值,因而被形象地称为缩位运算符。

Verilog HDL中,缩位运算符包括&(与)、| (或)、^ (异或)以及相应的非操作&、|、^、^。归约运算符的操作数只有一个。

归约运算符的运算过程是:设a是一个4位的寄存器型变量,它的四位分别是a[0]、a[1]、a[2]和a[3]。当对a进行缩位运算时,先对a[0]和a[1]进行缩位运算,产生1位的结果,再将这个结果与a[2]进行缩位运算,再接着是a[3],最后产生1位的操作结果。

归约操作举例:

module cut_tb;reg[5:0]a;initialbegina=6'b101011;$display("%b",&a);   	//结果为1'b0$display("%b",|a);    	//结果为1'b1$display("%b",^a);	 	//结果为1'b0end
endmodule

移位运算符

移位运算符有两种:左移位运算符(<<)、右移位运算符(>>)。运算过程是将左边(右边)的操作数向左(右)移,所移动的位数由右边的操作数来决定,然后用0来填补移出的空位。


条件运算符

条件运算符是Verilog HDL里唯一的三目运算符,它根据条件表达式的值来选择执行表达式,其表达形式为:<条件表达式>?<表达式1>:<表达式2>。其中,条件表达式的计算结果有真(1)、假(0)和不定态(x)三种。当条件表达式的结果为真时,执行表达式1,当条件表达式的结果为假时,执行表达式2。


连接和复制运算符

Verilog HDL语言中还有两个特殊的运算符:连接运算符({})和复制运算符({{}})。

连接运算符是把位于大括号({})中的两个或两个以上信号或数值用逗号(,)分隔的小表达式按位连接在一起,最后用大括号括起来表示一个整体信号,形成一个大的表达式。其格式为:{信号1的某几位,信号2的某几位,…,信号n的某几位}

重复运算符({{}}) 将一个表达式放入双重花括号中,复制因子放在第一层括号中。它为复制一个常量或变量提供了一种简便方法。

连接和复制操作举例:

module con_rep_tb;reg [2:0]a;reg [3:0]b;reg [7:0]c;reg [4:0]d;reg [5:0]e;initialbegina=3'b101;b=5'b1110;c={a,b};d={a[2:1],b[2:0]};e={2{a}};$display("%b",c);   	//结果为8'b01011110	$display("%b",d);	//结果为5'b10110$display("%b",e);	//结果为6'b101101end
endmodule

相关文章:

【Verilog】运算符

系列文章 数值&#xff08;整数&#xff0c;实数&#xff0c;字符串&#xff09;与数据类型&#xff08;wire、reg、mem、parameter&#xff09; 系列文章算术运算符关系运算符相等关系运算符逻辑运算符按位运算符归约运算符移位运算符条件运算符连接和复制运算符 算术运算符 …...

浅析ARMv8体系结构:A64指令集

文章目录 A64指令编码格式加载与存储指令寻址模式变基模式前变基模式后变基模式 PC相对地址模式 伪指令加载与存储指令的变种不同位宽的加载与存储指令多字节内存加载和存储指令基地址偏移量模式前变基模式后变基模式 跳转指令返回指令比较并跳转指令 其它指令内存独占访问指令…...

VSCode安装GitHub Copilot插件方法

VSCode安装GitHub Copilot插件的步骤及注意事项如下&#xff1a; 安装步骤&#xff1a; 确保系统要求&#xff1a; 确保你正在使用的Visual Studio Code版本是最新的&#xff0c;且支持GitHub Copilot。同时&#xff0c;Copilot需要你的操作系统是Windows、macOS或Linux&#x…...

实战:使用docker容器化服务

本文介绍使用docker安装mysql和redis&#xff0c;通过这两个的实战&#xff0c;了解一般的安装容器化服务的流程&#xff0c;体会服务容器化的好处 1.使用docker安装MySQL docker 拉取 mysql 镜像 docker pull mysql:5.7运行 mysql 镜像 docker run -p 3306:3306 --name mysql…...

借用GitHub将typora图片文件快速上传CSDN

前情概要 众所周知&#xff0c;程序员大佬们喜欢用typora软件写代码笔记&#xff0c;写了很多笔记想要放到CSDN上给其他大佬分享&#xff0c;但是在往csdn上搬运的时候&#xff0c;图片总是上传出错&#xff0c;一张一张搞有很麻烦&#xff0c;咋如何搞&#xff1f; 废话不多…...

外包公司干了2个月,技术退步明显了.......

先说一下自己的情况&#xff0c;本科毕业&#xff0c;18年通过校招进入南京某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能…...

PTA✨C语言 组合数的和

7-5 组合数的和 分数 15 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 给定 N 个非 0 的个位数字&#xff0c;用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8&#xff0c;则可以组合出&#xff1a;25、28、5…...

这些开源自动化测试框架,会用等于白嫖一个w

作者&#xff1a;黑马测试 链接&#xff1a;https://www.zhihu.com/question/19923336/answer/2585952461 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 随着计算机技术人员的大量增加&#xff0c;通过编写代码来…...

代码随想录第三十六天——无重叠区间,划分字母区间,合并区间

leetcode 435. 无重叠区间 题目链接&#xff1a;无重叠区间 方法一&#xff1a;按右边界排序 按照右边界排序&#xff0c;从左向右记录非交叉区间的个数。最后用区间总数减去非交叉区间的个数就是需要移除的区间个数。此时问题转化为求非交叉区间的最大个数。 版本一&#…...

Python数据分析:入门到实践

一、引言 &#xff08;用手机写的&#xff0c;明天重新排版。&#xff09; 在当今数据驱动的时代&#xff0c;数据分析已经成为各行各业不可或缺的一部分。Python作为一种高效、易学的编程语言&#xff0c;在数据分析领域具有广泛的应用。本文将带你从Python数据分析的入门知…...

第7章-第9节-Java中的Stream流(链式调用)

1、什么是Stream流 Lambda表达式&#xff0c;基于Lambda所带来的函数式编程&#xff0c;又引入了一个全新的Stream概念&#xff0c;用于解决集合类库既有的鼻端。 2、案例 假设现在有一个需求&#xff0c; 将list集合中姓张的元素过滤到一个新的集合中&#xff1b;然后将过滤…...

创建一个矩形中有两个三角形

#include <glad/glad.h> #include <GLFW/glfw3.h>#include <iostream>float vertices[] {// 第一个三角形0.5f, 0.5f, 0.0f, // 右上0.5f, -0.5f, 0.0f, // 右下-0.5f, -0.5f, 0.0f, // 左下-0.5f, 0.5f, 0.0f, // 左上 };unsigned i…...

Open3D 基于kdtree树的邻近点搜索(10)

Open3D 基于kdtree树的邻近点搜索(10) 一、算法简介二、算法实现1.K邻近点搜索2.R邻域点搜索三、结果释义一、算法简介 KD 树(k-dimensional tree)是一种用于组织 k 维空间中点的数据结构,旨在提供高效的 k 最近邻搜索和范围搜索(如半径邻域搜索)。KD 树通过递归地将空间…...

c++实现支持动态扩容的栈(stack)

1.在栈容量满时自动扩容: 支持自动扩容栈实现: // // myStack.hpp // algo_demo // // Created by Hacker X on 2024/1/9. //#ifndef myStack_hpp #define myStack_hpp #include <stdio.h> #include <string.h> //栈实现 //1.入栈 //2.出栈 //3.空栈 //4.满栈 …...

举例说明计算机视觉(CV)技术的优势和挑战。

计算机视觉&#xff08;Computer Vision&#xff0c;CV&#xff09;技术是指使计算机能够理解和解释视觉数据的能力。CV技术在很多领域都有广泛的应用&#xff0c;包括图像处理、目标检测、人脸识别、自动驾驶等。以下是CV技术的一些优势和挑战的例子&#xff1a; 优势&#x…...

如何利用docker来部署war包项目

首先编写dockerfile文件&#xff1a; # 使用官方的Tomcat镜像作为基础镜像 FROM tomcat:9.0# 将war包复制到容器的webapps目录下 COPY xxxx.war /usr/local/tomcat/webapps/# 暴露Tomcat的默认端口 EXPOSE 8080 编写docker-compose.yml文件&#xff1a; version: 3 services…...

SpringBoot 如何增强PageHelper入参的健壮性

PageHelper.startPage(int pageNum, int pageSize, boolean count) 参数为外部输入&#xff0c;故存在异常输入场景。比如 pageNum 和 pageSize 输入的值 负数 或者 0&#xff0c;所以引入PageUtils来对入参进行判断矫正&#xff0c;从而避免引入异常。 第1步&#xff1a;支持…...

书生·浦语大模型全链路开源体系 学习笔记 第三课

huggingface-cli: command not found 按照该文档解决即可 https://github.com/huggingface/huggingface_hub/issues/1079 具体如下&#xff1a; 1、确保环境已将安装huggingface-cli 2、版本需要旧版&#xff0c;pip install huggingface_hub0.20.1 3、再按如下执行 # T…...

CodeGPT,你的智能编码助手—CSDN出品

CodeGPT是由CSDN打造的一款生成式AI产品&#xff0c;专为开发者量身定制。 无论是在学习新技术还是在实际工作中遇到的各类计算机和开发难题&#xff0c;CodeGPT都能提供强大的支持。其涵盖的功能包括代码优化、续写、解释、提问等&#xff0c;还能生成精准的注释和创作相关内…...

VMware Workstation——修改虚拟机配置和设置网络

目录 一、修改配置 1、点击需要修改配置的虚拟机&#xff0c;然后点击编辑虚拟机配置 2、修改内存、CPU、硬盘配置 二、设置网络 1、从虚拟机配置中进入到网络适配器设置 2、选择网络连接模式 一、修改配置 1、点击需要修改配置的虚拟机&#xff0c;然后点击编辑虚拟机配…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...