第4讲VHDL运算操作符 赋值运算符 逻辑运算符 关系运算符 算术运算符 移位运算符 并置运算符 VHDL操作符与其他程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
语言相似,VHDL中的表达式也是由运算符将基本元素连接起来形成。在VHDL语言中共有6类操作符第4讲VHDL运算操作符在VHDL语言中,共有6种逻辑运算符,他们分别是: NOT取反; AND与; OR或; NAND与非; NOR或非; XOR异或。 逻辑运算符这6种逻辑运算符可以对“BIT”和“STD_LOGIC”等逻辑型数据、“STD_LOGIC_VECTOR”逻辑型数组及布尔数据进行逻辑运算。必须注意:运算符的左边和右边,以及代入的信号的数据类型必须是相同的。第4讲VHDL运算操作符【例1】SIGNALa,b,c:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALd,e,f,g:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALh,I,j,k:STD_LOGIC;SIGNALl,m,n,o,p:BOOLEAN;...a<=bANDc;--b、c相与后向a赋值,a、b、c的数据类型同属4位长的位矢量d<=eORfORg;--两个操作符OR相同,不需括号h<=(iNANDj)NANDk;--NAND不属上述三种算符中的一种,必须加括号l<=(mXORn)AND(oXORp);--操作符不同,必须加括号h<=iANDjANDk;--两个操作符都是AND,不必加括号h<=iANDjORk;--两个操作符不同,未加括号,表达错误a<=bANDe;--操作数b与e的位矢长度不一致,表达错误h<=iORl;--i的数据类型是位STD_LOGIC,而l的数据类型是...--布尔量BOOLEAN,因而不能相互作用,表达错误。 逻辑操作符第4讲VHDL运算操作符 关系操作符【例2】ENTITYrelational_ops_1ISPORT(a,b:INBIT_VECTOR(0TO3);m:OUTBOOLEAN);ENDrelational_ops_1;ARCHITECTUREexampleOFrelational_ops_1ISBEGINoutput<=(a=b);ENDexample;【例3】ENTITYrelational_ops_2ISPORT(a,b:ININTEGERRANGE0TO3;m:OUTBOOLEAN);ENDrelational_ops_2;ARCHITECTUREexampleOFrelational_ops_2ISBEGINoutput<=(a>=b);ENDexample;六种关系运算操作符:“=”(等于)、“/=”(不等于)、“>”(大于)、“<”(小于)、“>=”(大于等于)“<=”(小于等于)第4讲VHDL运算操作符VHDL语言中有5类算术运算符,他们分别是: 求和操作符:+、- 求积操作符:*、/、MOD、REM 符号操作符:+、- 混合操作符:**、ABS 移位操作符:SLL、SRL、SLA、SRA、ROL、ROR 算术运算符第4讲VHDL运算操作符 求和操作符【例5】VARIABLEa,b,c,d,e,f:INTEGERRANGE0TO255;...a:=b+c;d:=e–f;【例4】PROCEDUREadding_e(a:ININTEGER;b:INOUTINTEGER)IS...b:=a+b;第4讲VHDL运算操作符【例6】PACKAGEexample_arithmeticISTYPEsmall_INtISRANGE0TO7;ENDexample_arithmetic;USEwork.example_arithmetic.ALL;ENTITYarithmeticISPORT(a,b:INSMALL_INT;c:OUTSMALL_INT);ENDarithmetic;ARCHITECTUREexampleOFarithmeticISBEGINc<=a+b;ENDexample;第4讲VHDL运算操作符 求积操作符 符号操作符求积操作符包括*(乘)、/(除)、MOD(取模)和REM(取余)四种操作符。符号操作符“+”和“-”的操作数只有一个。第4讲VHDL运算操作符 混合操作符【例7】SIGNALa,b:INTEGERRANGE-8to7;SIGNALc:INTEGERRANGE0to15;SIGNALd:INTEGERRANGE0to3;a<=ABS(b);c<=2**d;混合操作符包括乘方“**”操作符和取绝对值“ABS”操作符两种第4讲VHDL运算操作符 移位操作符移位操作符的语句
格式
pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载
是:标识符移位操作符移位位数; SLL(逻辑左移) SRL(逻辑右移) SLA(算术左移) SRA(算术右移) ROL(逻辑循环左移) ROR(逻辑循环右移)第4讲VHDL运算操作符【例8】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdecoder3to8ISport(input:INSTD_LOGIC_VECTOR(2DOWNTO0);output:OUTBIT_VECTOR(7DOWNTO0));ENDdecoder3to8;ARCHITECTUREbehaveOFdecoder3to8ISBEGINoutput<="00000001"SLLCONV_INTEGER(input);--被移位部分是常数!ENDbehave;第4讲VHDL运算操作符 并置运算符SIGNALg,h,i:STD_LOGIC;SIGNALc,d,e:STD_LOGIC_VECTOR(1TO0);┇d<=i&NOTh;a<=c&d;元素与元素并置,形成长度为2的数组数组与数组并置,形成长度为4的数组&连接第4讲VHDL运算操作符 赋值运算符赋值运算符用来给信号、变量和常量赋值。 <=用于对signal赋值 :=用于对variable,constant和generic赋值,也可用于初始赋值; =〉给矢量中某些位赋值,或对某些位之外的其它位赋值。第4讲VHDL运算操作符例首先定义下列信号和变量Signalx:std_logic;Varibaley:std_logic_vector(3downto0);Signalw:std_logic_vector(0to7);X<=‘1’;Y:=“0000”;W<=“10000000”;W<=(0=>’1’,others=>’0’);--最低位是1,其它位0第4讲VHDL运算操作符即用户自定义操作符,可以与预定义的操作符具有相同的名称。对已存在的操作符重新定义,可进行不同类型操作数之间的运算。例:对一个整数和一个1位的二进制数进行加法运算function“+”(a:integer;b:bit)returnintegerisbeginif(b=‘1’)thenreturna+1;elsereturna;endif;end“+”; 重载操作符第4讲VHDL运算操作符运算符NOT,ABS,***,/,MOD,REM+(正号),-(负号)+,-,&SLL,SLA,SRL,SRA,ROL,ROR=,/=,<,>,<=,>=AND,OR,NAND,NOR,XOR,XNOR VHDL操作符的优先顺序最高优先级最低优先级优先级运算操作符总汇列表如下:第4讲VHDL运算操作符VHDL操作符 类型 操作符 功能 操作数数据类型 算术操作符 + 加 整数 - 减 整数 & 并置 一维数组 * 乘 整数和实数(包括浮点数) / 除 整数和实数(包括浮点数) MOD 取模 整数 ** 乘方 整数 ABS 取绝对值 整数 REM 取余 整数 + 正 整数 - 负 整数 移位操作符 SLL 逻辑左移 BIT或布尔型一维数组 SRL 逻辑右移 BIT或布尔型一维数组 SLA 算术左移 BIT或布尔型一维数组 SRA 算术右移 BIT或布尔型一维数组 ROL 逻辑循环左移 BIT或布尔型一维数组 ROR 逻辑循环右移 BIT或布尔型一维数组 赋值运算符 <= 用于对SIGNAL赋值 := 用于对VARIABLE,CONSTANT和GENERIC赋值,也可赋初值 => 给矢量中某些位赋值,或对其中的某些位赋值第4讲VHDL运算操作符接上页 类型 操作符 功能 操作数数据类型 关系操作符 = 等于 任何数据类型 /= 不等于 任何数据类型 < 小于 枚举与整数类型,及对应的一维数组 > 大于 枚举与整数类型,及对应的一维数组 <= 小于等于 枚举与整数类型,及对应的一维数组 >= 大于等于 枚举与整数类型,及对应的一维数组 逻辑操作符 AND 与 BIT,BOOLEAN,STD_LOGIC OR 或 BIT,BOOLEAN,STD_LOGIC NAND 与非 BIT,BOOLEAN,STD_LOGIC NOR 或非 BIT,BOOLEAN,STD_LOGIC XOR 异或 BIT,BOOLEAN,STD_LOGIC XNOR 异或非 BIT,BOOLEAN,STD_LOGIC NOT 非 BIT,BOOLEAN,STD_LOGIC 并置操作符 & 用于位的拼接第4讲VHDL运算操作符