返回顶部
首页 > 资讯 > 后端开发 > JAVA >VHDL的运算操作符
  • 878
分享到

VHDL的运算操作符

java算法数据结构Poweredby金山文档 2023-09-08 06:09:21 878人浏览 泡泡鱼
摘要

在VHDL语言中共有4类操作符,可以分别进行逻辑运算(logical)、关系运算(relational)、算术运算(Arithmetic)和并置运算(Concatenation)。需要注意的是,被操作符所操作的对象是操作数,且操作数的类型应

在VHDL语言中共有4类操作符,可以分别进行逻辑运算(logical)、关系运算(relational)、算术运算(Arithmetic)和并置运算(Concatenation)。需要注意的是,被操作符所操作的对象是操作数,且操作数的类型应该和操作符所要求的类型相一致。另外,运算操作符是有优先级的,例如逻辑运算符NOT,在所有操作符中其优先级最高。下表所有操作符的优先次序。

操作符的优先级

一、逻辑运算符

在VHDL语言中逻辑运算符共有6种,它们分别是:

NOT——取反;

AND——与;

OR——或;

NAND——与非;

NOR——或非;

XOR——异或。

这6种逻辑运算符可以对“STD_LOGIC”和“STD_LOGIC_VECTOR”等数据进行逻辑运算。必须注意,运算符的左边和右边,以及代入的信号的数据类型必须是相同的。

当一个语句中存在两个以上的逻辑表达式时,在C语言中运算有自左至右的优先级顺序的规定,而在VHDL语言中,左右没有优先级差别。例如,在下例中,如去掉式中的括号,那么从语法上来说是错误的:

x <=(a AND b)OR(NOT c AND d);

当然,如果一个逻辑表达式中只有“AND”,“OR”,“XOR”运算符,那么改变运算顺序将不会导致逻辑的改变。此时,括号是可以省略的。例如:

a <= b AND c AND d AND e;

a <= b OR c OR d OR e;

在所有逻辑运算符中NOT的优先级最高。

二、 算术运算符

VHDL语言有10种算术运算符,它们分别是:

十——加;

— ——减;

* ——乘;

/——除;

MOD ——求模;

REM ——取余;

+——正;(一元运算)

— ——负;(一元运算)

** ——指数;

ABS ——取绝对值。

在算术运算中,对于一元运算的操作数(正、负)可以为任何数值类型(整数、实数、物理量)。加法和减法的操作数也和上面一样,具有相同的数据类型,而且参加加、减运算的操作数的类型也必须相同。乘除法的操作数可以同为整数和实数。物理量可以被整数或实数相乘或相除,其结果仍为一个物理量。物理量除以同一类型的物理量即可得到一个整数量。求模和取余的操作数必须是同一整数类型数据。一个指数的运算符的左操作数可以是任意整数或实数,而右操作数应为一整数。

若对“STD_LOGIC_VECTOR”进行“+”(加)、“一”(减)运算时,两边的操作数和代入的变量位长如不同,则会产生语法错误。另外,“*”运算符两边的位长相加后的值和要代入的变量的位长不相同时,同样也会出现语法错误。

三、关系运算符

VHDL语言中有6种关系运算符,它们分别是:

=——等于;

/=———不等于;

<——小于;

<=———小于等于;

>——大于;

>=——大于等于。

在关系运算符的左右两边是运算操作数,不同的关系运算符对两边的操作数的数据类型有不同的要求。其中等号“=”和不等号“/=”可以适用所有类型的数据。其它关系运算符则可使用于整数(INTEGER)和实数(REAL)、位(STD_LOGIC)等校举类型以及位矢量(STD_LOGIC_VECTOR)等数组类型的关系运算。在进行关系运算时,左右两边的操作数的数据类型必须相同,但是位长度不一定相同。当然也有例外的情况,在利用关系运算符对位矢量数据进行比较时,比较过程是从最左边的位开始。自左至右按位进行比较的。在位长不同的情况下,只能按自左至右的比较结果作为关系运算的结果。例如,对3位和4位的位矢量进行比较:

SIGNAL a:STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL b:STD_LOGIC_VECTOR(2 DOWNTO 0);

a <= “1010”; --10

b <= “111”; --7

IF( a > b) THEN

ELSE

上例a的值为10,而b的值为7,a应该比b大。但是,由于位矢量是从左至右按位比较的,当比较到次高位时,a的次高位为“0”而b的次高位为“1”,故比较结果b比a大。这样的比较结果显然是不符合实际情况的。

为了能使位矢量进行关系运算,在包集合“STD_LOGIC_UNSIGNED”中对“STD_LOGIC_VECTOR”关系运算重新作了定义,使其可以正确的进行关系运算。注意在用时必须首先说明调用该包集合。

四、并置运算符

并置运算符“&”用于位的连接。例如,将4个位用并置运算符”&”连接起来就可以构成一个具有4位长度的位矢量。两个4位的位矢量用并置运算符“&”连接起来就可以构成8位长度的位矢量。

如en是b(0)~b(3)的允许输出信号,

tmp_b <= b AND (en & en & en & en)

这个语句表示b的4位位矢量由en进行选择得到一个4位位矢量的输出。

来源地址:https://blog.csdn.net/weixin_72077052/article/details/129542835

--结束END--

本文标题: VHDL的运算操作符

本文链接: https://lsjlt.com/news/399455.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • VHDL的运算操作符
    在VHDL语言中共有4类操作符,可以分别进行逻辑运算(logical)、关系运算(relational)、算术运算(Arithmetic)和并置运算(Concatenation)。需要注意的是,被操作符所操作的对象是操作数,且操作数的类型应...
    99+
    2023-09-08
    java 算法 数据结构 Powered by 金山文档
  • MongoDB 数组操作符与运算操作符
    > db.accounts.insert({ name:"alice2", balance:100,contact:[13611111111,"Guangzhou"] }) WriteResult({ "nInserted" : 1 }) ...
    99+
    2021-01-20
    MongoDB 数组操作符与运算操作符
  • Python 位操作运算符
    & 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100 | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就...
    99+
    2023-01-30
    运算符 操作 Python
  • JavaScript算数运算符、运算符和操作数是什么
    今天小编给大家分享一下JavaScript算数运算符、运算符和操作数是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收...
    99+
    2024-04-02
  • C#运算符重载“>”的操作
    本篇内容主要讲解“C#运算符重载“>”的操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#运算符重载“>”的操作”吧!C#运算符重载“>”的操作问题的出现:今天一个同学在做...
    99+
    2023-06-18
  • PHP运算符与操作符有哪些
    小编给大家分享一下PHP运算符与操作符有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!PHP中常用的运算符与操作符:(1)算...
    99+
    2024-04-02
  • 如何操作Java instanceof 运算符?
    多态性带来了一个问题,就是如何判断一个变量所实际引用的对象的类型 。 C++使用runtime-type information(RTTI),Java 使用 instanceof 操作符。老师提醒:instanceof 运算符用来判断一个变...
    99+
    2023-06-02
  • SQL运算符的操作语句整理
    这篇文章主要讲解了“SQL运算符的操作语句整理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL运算符的操作语句整理”吧!SQL 中的运算符1算术运算符:...
    99+
    2024-04-02
  • python的数值运算操作符有哪些
    python中的数值运算操作符有以下几种操作符及使用作用x+y加,x与y之和x–y减,x与 y之差x*y乘,x与y之积x/y除,x与y之商 10/3结果是3.3333333333333335x // y整数除,x与y之整数商 10//3结果...
    99+
    2024-04-02
  • js中不常见的运算符与操作符总结
    javaScript常用运算符和操作符总结 类别 ...
    99+
    2024-04-02
  • js不常见操作运算符总结
    目录2、逗号运算符3、javaScript空值合并操作符(??)4、javaScript可选链操作符( ?. )1、前言 js的运算符很多,之前有文章提过。例...
    99+
    2024-04-02
  • JavaScript的运算符和操作数实例分析
    这篇文章主要介绍“JavaScript的运算符和操作数实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript的运算符和操作数实例分析”文章能帮助...
    99+
    2024-04-02
  • php中的数组操作运算符怎么用
    这篇文章主要介绍“php中的数组操作运算符怎么用”,在日常操作中,相信很多人在php中的数组操作运算符怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php中的数组操作运算符怎么用”的疑惑有所帮助!接下来...
    99+
    2023-06-30
  • VBS运算符(+)的作用
    本篇内容介绍了“VBS运算符(+)的作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!运算符(+)计算两个数之和。result = expr...
    99+
    2023-06-08
  • Expression操作运算符、表达式和操作方法总结
    一、Expression中的操作运算符 成员名称说明Add加法运算,如 a + b, ,不进行溢出检查,针对数值操作数。AddAssign加法复合赋值运算,如 (a += b), ,...
    99+
    2024-04-02
  • 浅析Golang中的的位操作(按位运算符)
    在计算机内存昂贵,处理能力有限的美好旧时光里,用比较黑客范的位运算方式去处理信息是首选方式(某些情况下只能如此)。时至今日,直接使用位运算仍然是很多计算领域中不可或缺的部分,例如底层系统编程,图形处理,密码学等。Go 编程语言支持以下按位运...
    99+
    2023-05-14
    位操作 go语言 Golang
  • Python中的数学运算操作符使用进阶
    Python中对象的行为是由它的类型 (Type) 决定的。所谓类型就是支持某些特定的操作。数字对象在任何编程语言中都是基础元素,支持加、减、乘、除等数学操作。 Python的数字对象有整数和浮点数,支持各...
    99+
    2022-06-04
    进阶 数学 操作
  • JavaScript中极易出错的操作符运算总结
    目录算术运算符非正常情况1: 有特殊值字面量参与的运算非正常情况2: 其他类型的数据参与数学运算。比较运算符非正常情况1: 特殊值参与比较运算非正常情况2: 其他数据类型参与比较运算...
    99+
    2024-04-02
  • VBS中\运算符的作用
    这篇文章主要介绍“VBS中\运算符的作用”,在日常操作中,相信很多人在VBS中\运算符的作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”VBS中\运算符的作用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-08
  • VBS减运算符(-)的作用
    这篇文章主要介绍“VBS减运算符(-)的作用”,在日常操作中,相信很多人在VBS减运算符(-)的作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”VBS减运算符(-)的作用”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作