第3章 VHDL的语言要素.ppt

上传人:s****8 文档编号:68704058 上传时间:2022-12-29 格式:PPT 页数:41 大小:299.50KB
返回 下载 相关 举报
第3章 VHDL的语言要素.ppt_第1页
第1页 / 共41页
第3章 VHDL的语言要素.ppt_第2页
第2页 / 共41页
点击查看更多>>
资源描述

《第3章 VHDL的语言要素.ppt》由会员分享,可在线阅读,更多相关《第3章 VHDL的语言要素.ppt(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 本章内容提要本章内容提要p VHDL 的标识符的标识符p 数据对象数据对象p 数据类型数据类型p 运算操作符运算操作符第第3章章 VHDL的语言要素的语言要素3.1 VHDL的标识符的标识符o 标识符是最常用的命名符,标识符可以是常数、标识符是最常用的命名符,标识符可以是常数、变量、信号、端口、子程序、实体、结构体的变量、信号、端口、子程序、实体、结构体的名称等;名称等;oVHDL的标识符有两种,基本标识符的标识符有两种,基本标识符(VHDL87版版)和扩展标识符和扩展标识符(VHDL93版版)。VHDL93版对版对VHDL87版的标识符语法规则进行了扩展,形版的标识符语法规则进行了扩展,形

2、成了成了VHDL93版的标识符语法规则,以反斜杠版的标识符语法规则,以反斜杠“”界定界定VHDL基本标识符的命名必须遵循如下规则:基本标识符的命名必须遵循如下规则:基本标识符由字母、数字和下划线组成基本标识符由字母、数字和下划线组成 第一个字符必须是字母第一个字符必须是字母 最后一个字符不能是下划线最后一个字符不能是下划线 不允许连续不允许连续2个下划线个下划线 保留字保留字(关键字关键字)不能用于标识符不能用于标识符 大小写是等效的大小写是等效的下面是合法的标识符:下面是合法的标识符:Decoder_1,fft,sig_N,state,aaa一、基本标识符一、基本标识符扩展标识符用反斜杠来界

3、定,可以以数字打头;扩展标识符用反斜杠来界定,可以以数字打头;例:例:74ls173,controller_docode 都是合法的标识都是合法的标识符符允许包含图形符号和空格;允许包含图形符号和空格;例:例:$500&T,A OR B 都是合法的标识符都是合法的标识符允许多个下划线相邻;允许多个下划线相邻;例:例:out_entity 是合法的标识符是合法的标识符扩展标识符区分大小写,且与短标识符不同;扩展标识符区分大小写,且与短标识符不同;例:例:adder,Adder,adder是不同的标识符是不同的标识符扩展标识符的名字如果含有一个反斜杠,则用相邻的两扩展标识符的名字如果含有一个反斜杠

4、,则用相邻的两个反斜杠来代表它;个反斜杠来代表它;例:例:text表示该扩展标识符的名称是表示该扩展标识符的名称是text二、扩展标识符二、扩展标识符VHDL的保留字的保留字(VHDL87版版)3.2 VHDL的数据对象的数据对象 凡是可以被赋值的对象就称为数据对象。凡是可以被赋值的对象就称为数据对象。VHDL中有以下中有以下4类数据对象:类数据对象:l 变量(变量(VARIABLE)l 常量(常量(CONSTANT)l 信号(信号(SIGNAL)l 文件文件*(FILE)包含在包含在VHDL93 标准中标准中 变量和常量与其它计算机高级语言中所说的变量和常量是一致的,而信号则是VHDL特有的

5、数据对象;在电子电路设计中,这3类对象通常具有一定的物理含义,信号对应的代表数字电路中的一根硬件连接线;常数对应于数字电路中的电源和地等;变量无直接的对应关系,通常只用来暂时的保存某些信号的值。对象声明的一般格式对象声明的一般格式对象类型对象类型 对象名对象名:数据类型:数据类型:=初始值初始值 CONSTANT INTEGER VARIABLE BIT SIGNAL CONSTANT CONSTANT 常量名常量名常量名常量名 :数据类型数据类型数据类型数据类型 :=:=表达式;表达式;表达式;表达式;说明:说明:说明:说明:l l 常量名的命名遵循常量名的命名遵循常量名的命名遵循常量名的命

6、名遵循VHDLVHDL标识符的命名规则;标识符的命名规则;标识符的命名规则;标识符的命名规则;l l常量在设计中一旦被赋值就不能再改变常量在设计中一旦被赋值就不能再改变常量在设计中一旦被赋值就不能再改变常量在设计中一旦被赋值就不能再改变;l l 常量的数据类型可以是标量型和复合型,但不能是文常量的数据类型可以是标量型和复合型,但不能是文常量的数据类型可以是标量型和复合型,但不能是文常量的数据类型可以是标量型和复合型,但不能是文件型和存取型(件型和存取型(件型和存取型(件型和存取型(AccessAccess););););l l 常量可以在实体、结构体、程序包、进程、块和子程常量可以在实体、结构

7、体、程序包、进程、块和子程常量可以在实体、结构体、程序包、进程、块和子程常量可以在实体、结构体、程序包、进程、块和子程序的说明部分中被定义。常量的使用范围取决于它被定序的说明部分中被定义。常量的使用范围取决于它被定序的说明部分中被定义。常量的使用范围取决于它被定序的说明部分中被定义。常量的使用范围取决于它被定义的位置。义的位置。义的位置。义的位置。一、常量(一、常量(一、常量(一、常量(CONSTANTCONSTANT)1.1.常量声明格式:常量声明格式:常量声明格式:常量声明格式:CONSTANT VCC:REAL:=5.0;CONSTANT PI:REAL:=3.14;CONSTANT D

8、ELAY_time:TIME:=10 ns;CONSTANT ROM_size:INTEGER:=16#FFFF#;2.2.常量声明示例:常量声明示例:常量声明示例:常量声明示例:二、变量(二、变量(二、变量(二、变量(VARIABLEVARIABLE)1.1.变量的声明格式:变量的声明格式:变量的声明格式:变量的声明格式:VARIABLE VARIABLE 变量名:数据类型变量名:数据类型变量名:数据类型变量名:数据类型 约束条件约束条件约束条件约束条件 :=初始值初始值初始值初始值;2.2.变量的赋值格式:目标变量名变量的赋值格式:目标变量名变量的赋值格式:目标变量名变量的赋值格式:目标变

9、量名:=:=表达式;表达式;表达式;表达式;说明:说明:说明:说明:变量允许多次赋值,且赋值立即生效,不能产生附加延变量允许多次赋值,且赋值立即生效,不能产生附加延变量允许多次赋值,且赋值立即生效,不能产生附加延变量允许多次赋值,且赋值立即生效,不能产生附加延时(它是一种理想化的数据传输过程)时(它是一种理想化的数据传输过程)时(它是一种理想化的数据传输过程)时(它是一种理想化的数据传输过程);变量定义时允许设置初始值,但在综合时,综合器将略变量定义时允许设置初始值,但在综合时,综合器将略变量定义时允许设置初始值,但在综合时,综合器将略变量定义时允许设置初始值,但在综合时,综合器将略去所有的初

10、始值;去所有的初始值;去所有的初始值;去所有的初始值;对变量进行赋值时,目标变量可以是单值变量,也可以对变量进行赋值时,目标变量可以是单值变量,也可以对变量进行赋值时,目标变量可以是单值变量,也可以对变量进行赋值时,目标变量可以是单值变量,也可以是数组型变量;是数组型变量;是数组型变量;是数组型变量;在在在在VHDLVHDL中,变量只能在进程和子程序(过程和函数)中,变量只能在进程和子程序(过程和函数)中,变量只能在进程和子程序(过程和函数)中,变量只能在进程和子程序(过程和函数)中使用,它是一个局部量。中使用,它是一个局部量。中使用,它是一个局部量。中使用,它是一个局部量。3 3、变量使用示

11、例:、变量使用示例:、变量使用示例:、变量使用示例:VARIABLE x,y,z:INTEGER;VARIABLE COUNT:INTEGER RANGE 0 TO 255:=10;VARIABLE a,b:BIT_VECTOR(0 to 7);b:=”1010101”;a:=b;a(3 to 6):=(1,1,0,1););-注意赋值注意赋值符号两边的位宽必须相等符号两边的位宽必须相等a(0 to 5):=b(2 to 7);a(7):=0;注意上例中对数组中单个元素赋值和多个元素赋值时的差异。注意上例中对数组中单个元素赋值和多个元素赋值时的差异。信信号号是是VHDL语语言言独独有有的的数数

12、据据对对象象,信信号号相相当当于于电电路路中中元元件件之之间间的的连连线线,或或者者认认为为是是电电路路内内部部的的某某一一节节点点。信信号号除除了了没没有有数数据据流流动动方方向向的的说说明明以以外外,其其它它性性质质与与实实体体的的端端口口概念是一致的。概念是一致的。1.信号声明格式:信号声明格式:SIGNAL 信号名:数据类型信号名:数据类型 约束条件约束条件:表达式;表达式;2.信号赋值格式:信号赋值格式:信号名信号名=表达式;表达式;三、信号(三、信号(SIGNAL)p 信号的赋值符号是信号的赋值符号是“=”,但赋初值符号也是,但赋初值符号也是“:=”;p 信号没有方向性:可以被赋值

13、,也可被读取;信号没有方向性:可以被赋值,也可被读取;p信信号号通通常常在在实实体体、结结构构体体和和包包集集合合中中定定义义,但但不不能能在在进进程和子程序中定义;程和子程序中定义;p 信信号号赋赋值值不不是是立立即即发发生生的的,需需要要经经过过一一个个特特定定的的延延时时量量后才有效;后才有效;p 在在进进程程中中,只只能能将将信信号号列列入入敏敏感感表表,而而不不能能将将变变量量列列入入敏感表;敏感表;p 在在一一个个进进程程中中,允允许许对对同同一一信信号号有有多多个个驱驱动动源源(即即对对其其进行多次赋值),但只有最后的赋值语句有效;进行多次赋值),但只有最后的赋值语句有效;信号的

14、使用说明:信号的使用说明:信号的使用说明:信号的使用说明:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity test isport(a,b:in integer range 0 to 7;c,d:out integer range 0 to 15);end entity test;architecture behav of test is signal cc,dd:integer range 0 to 15;beginprocess(a,b)begin cc=a+b;-赋值语句不会执行

15、赋值语句不会执行 dd=a-b;cc=a-b;-最后一个赋值语句有效最后一个赋值语句有效 c=cc;d=dd;end process;end behav;3 3、信号的使用示例:多个驱动源对同一信号赋值、信号的使用示例:多个驱动源对同一信号赋值、信号的使用示例:多个驱动源对同一信号赋值、信号的使用示例:多个驱动源对同一信号赋值定义了两个定义了两个信号信号cc,ddMAX+plusII警告:警告:Found multiple assignments to the same signal in a Process Statementonly the last assignment will tak

16、e effect.端口其实也端口其实也是信号是信号p变变量量赋赋值值立立即即生生效效,而而信信号号赋赋值值需需要要在在delta()延延时时量量(延延时时:系系统统自自动动设设置置一一个个微微小小延延时时量量)系系统统或或者者用用户户指指定定的的延延时时周周期期后后(用用AFTER子子句句 指指定定)才才生生效效这这是是信号和标量的本质区别所在;信号和标量的本质区别所在;p信信号号不不允允许许在在进进程程和和子子程程序序中中声声明明,而而变变量量(不不包包括括共共享变量)只能在进程和子程序中使用;享变量)只能在进程和子程序中使用;p赋赋值值符符号号不不同同:信信号号的的赋赋值值符符号号是是“=

17、”,而而变变量量的的赋赋值符号为值符号为“:=”;p在在进进程程(PROCESS)中中,只只能能把把信信号号列列入入敏敏感感信信号号表表,而不能将变量列入敏感表;而不能将变量列入敏感表;4 4、信号和变量的区别信号和变量的区别信号和变量的区别信号和变量的区别signal d:std_logic;beginProc_A:process(a,b,c,d)begin d=a;x=b+d;d=c;y=b+d;end process Proc_A;Proc_B:process(a,b,c,d)variable d:std_logic;begin d:=a;x=b+d;d:=c;y=b+d;end pro

18、cess Proc_B;例例例例1 1:思考以下两个进程的运行结果有何不同:思考以下两个进程的运行结果有何不同:思考以下两个进程的运行结果有何不同:思考以下两个进程的运行结果有何不同?进程进程Proc_A运行结果为:运行结果为:x=b+c;y=b+c;进程进程Proc_B运行结果为:运行结果为:x=b+a;y=b+c;process(reset,clk)variable aa,bb:integer range 0 to 9;beginif reset=1 then aa:=1;bb:=0;elsif rising_edge(clk)then if aa=1 then bb:=4;end if;

19、if bb=4 then aa:=5;end if;end if;a=aa;b=bb;end process;end;process(reset,clk)beginif reset=1 then aa=1;bb=0;elsif rising_edge(clk)then if aa=1 then bb=4;end if;if bb=4 then aa=5;end if;end if;a=aa;b=bb;end process;end;例例例例2 2:思考以下两个进程的运行结果有何不同?:思考以下两个进程的运行结果有何不同?:思考以下两个进程的运行结果有何不同?:思考以下两个进程的运行结果有何不同

20、?重要结论:重要结论:重要结论:重要结论:p 在在进进程程中中,变变量量赋赋值值语语句句一一旦旦被被执执行行,目目标标变变量量立立即即被被赋赋予予新新值值,在在执执行行下下一一条条语语句句时时,改改变变量量的的值值为为上上一一句句新新赋赋的的值值,而而信信号号的的赋赋值值语语句句即即使使被被执执行行也也不不会会使使信信号号立立即即发发生生代代入入,下下一一条条语语句句执执行行时时,仍仍然然使使用用原原来来的的信信号号值值,信号是在进程挂起时才发生代入的。信号是在进程挂起时才发生代入的。四、四、VHDL 的数据对象的赋值的数据对象的赋值o集合操作(整体赋值)集合操作(整体赋值)o集合操作集合操作

21、-采用序号采用序号o集合操作集合操作-采用采用others注意:注意:OTHERS必须放在最后。必须放在最后。3.3 VHDL的数据类型的数据类型 VHDL是是一一种种强强类类型型语语言言,要要求求在在设设计计实实体体中中的的各各个个数数据据对对象象必必须须具具有有确确定定的的数数据据类类型型,并并且且只只有有相相同同数数据据类类型型的的操操作作数数才才能能进进行行赋赋值值或或运运算算。VHDL的数据类型有以下的数据类型有以下4大类型:大类型:p 预定义数据类型(标准数据类型)预定义数据类型(标准数据类型)是是VHDL中中最最常常用用、最最基基本本的的数数据据类类型型,这这些些数数据据类类型型

22、 大大 部部 分分 在在 VHDL的的 标标 准准 程程 序序 包包 STANDARD和和STD_LOGIC_1164中定义。中定义。p 用户自定义数据类型用户自定义数据类型 用用户户自自行行定定义义的的数数据据类类型型,其其基基本本元元素素仍仍属属于于预预定定义义数据类型。数据类型。根据数据类型产生的来源,上述四大类数据类型可分成:根据数据类型产生的来源,上述四大类数据类型可分成:一、预定义数据类型一、预定义数据类型以上十种类型是以上十种类型是VHDL中的标准类型中的标准类型(在标准程序包在标准程序包STANDARD中中定义定义)使用时不需作显式声明,可以直接使用。使用时不需作显式声明,可以

23、直接使用。二、其它预定义数据类型二、其它预定义数据类型 1、标准逻辑位类型、标准逻辑位类型(STD_LOGIC)标标准准逻逻辑辑位位数数据据类类型型是是扩扩展展的的BIT类类型型,在在IEEE1164标标准准中预定义了该数据类型:中预定义了该数据类型:Type std_logic is(U,X,0,1,Z,W,L,H,-);该类型能比较全面地包括数字电路中信号会出现的几种状该类型能比较全面地包括数字电路中信号会出现的几种状态,因此一般情况把这种类型代替态,因此一般情况把这种类型代替bit。2、标准逻辑位矢量类型(、标准逻辑位矢量类型(STD_LOGIC_VECTOR)STD_LOGIC_VEC

24、TOR是是基基于于STD_LOGIC 数数据据类类型型的的一一维维数数组组,数数组组中中的的每每一一个个元元素素都都是是以以上上定定义义的的一一位位STD_LOGIC。定义时须指明无符号整数的位数,最左边位为最高位。例如:定义时须指明无符号整数的位数,最左边位为最高位。例如:SIGNAL x:UNSIGNED(0 TO 3);-4位无符号整数定义位无符号整数定义 不能用不能用UNSIGNED定义负数;定义负数;UNSIGNED数数据据和和STD_LOGIC_VECTOR数数据据可可以以进进行行相互转换,如:相互转换,如:SIGNAL A,B:STD_LOGIC_VECTOR(1 DOWNTO

25、0);SIGNAL E,F:UNSIGNED(1 DOWNTO 0);E=UNSIGNED(A);B=STD_LOGIC_VECTOR(F);3、UNSIGNED无符号整数类型无符号整数类型4、SIGNED有符号数类型有符号数类型SIGNED 数据类型表示一个有符号的数值,综合器将其解数据类型表示一个有符号的数值,综合器将其解释为补码,最高位是符号位。如:释为补码,最高位是符号位。如:SIGNAL x,y:UNSIGNED(0 TO 3);-4位无符号整数定义位无符号整数定义 x=“0011”x 的值为的值为3 y=”1011”y 的值为的值为5UNSIGNED整数数据类型除了具有数值运算的好

26、处外,还整数数据类型除了具有数值运算的好处外,还具有也具有也STD_LOGIC_VECTOR相似的逻辑运算特性。这种相似的逻辑运算特性。这种特点使它在诸如计数器、分频器等的电路设计中应用广泛特点使它在诸如计数器、分频器等的电路设计中应用广泛。三、三、VHDL的自定义数据类型的自定义数据类型VHDL允许用户为设计需要自定义新的数据类型,用户允许用户为设计需要自定义新的数据类型,用户自定义数据类型的定义格式如下:自定义数据类型的定义格式如下:TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义 OF 基本数据类型;基本数据类型;TYPE 数据类型名数据类型名 IS 数据类型定义;数据类型

27、定义;例:例:TYPE st1 IS ARRAY(0 TO 15)OF STD_LOGIC;TYPE week IS(sun,mon,tue,wed,thu,fri,sat);VHDL中用户可以定义的数据类型有:中用户可以定义的数据类型有:枚举类型枚举类型enumberated、整数型整数型integer/实数型实数型real数组类型数组类型array、纪录类型纪录类型record、时间类型时间类型time、文件类型、文件类型file、存取类型、存取类型accessp列举数据对象可能存在的值,一般用于定义状态机的列举数据对象可能存在的值,一般用于定义状态机的状态:例如:状态:例如:Type s

28、tates is(idle,start,running,pause,stop)Signal current_state:states;pIEEE1076标准中预定义了两个枚举类型:标准中预定义了两个枚举类型:Type boolean is(False,True)Type bit is(0,1)Signal a:bit;p综合时综合器将其转换为二进制编码。综合时综合器将其转换为二进制编码。1.枚举数据类型枚举数据类型p整数整数/浮点数类型在浮点数类型在VHDL中已经预定义过,这里的中已经预定义过,这里的自定义整数自定义整数/浮点数类型实际上是它一个子类型,浮点数类型实际上是它一个子类型,定定义格

29、式义格式如下如下:TYPE数据类型名数据类型名 IS INTEGER/REAL 约束范围;约束范围;如如:TYPE digit IS INTEGER RANGE 0 TO 9;SIGNAL ge_wei,shi_wei,bai_wei:digit;TYPE current IS REAL RANGE -1E4 to 1E4;2.整数整数/浮点数类型浮点数类型pVHDL允许定义两种不同类型的数组:限定性数组和非限定性数允许定义两种不同类型的数组:限定性数组和非限定性数组;组;p限定性数组定义格式:限定性数组定义格式:TYPE 数组名数组名 IS ARRAY(数组范围数组范围)OF 数据类型数据类

30、型;如:如:TYPE word IS ARRAY(15 DOWNTO 0)OF STD_LOGIC;p非限定性数组的定义格式:非限定性数组的定义格式:TYPE 数组名数组名 IS ARRAY(数组下标名数组下标名 RANGE)OF 数据类型数据类型;如:如:TYPE bit_vector IS ARRAY(NATURAL RANGE)OF BIT;VARIABLE:va:bit_vector(1 to 8);VARIABLE:vb:bit_vector(1 to 4);3.数组类型数组类型o定义格式:定义格式:TYPE 记录类型名记录类型名IS RECORD 元素名元素名:元素数据类型元素数据

31、类型;元素名元素名:元素数据类型元素数据类型;END RECORD 记录类型名记录类型名;p记录对象的赋值:记录对象的赋值:n整体赋值:位置关联方式或名字关联方式整体赋值:位置关联方式或名字关联方式 n单个元素进行赋值:使用单个元素进行赋值:使用“.”圆点操作符号圆点操作符号 4.记录类型记录类型TYPE RegName IS(AX,BX,CX,DX);-定义一枚举类型定义一枚举类型RegNameTYPE Operation IS RECORD -定义一记录类型定义一记录类型Operation Mnemonic:STRING(1 TO 10);OpCode:BIT_VECTOR(3 DOWNT

32、O 0);Op1 Op2 Res:RegName;END record;VARIABLE Instr1 Instr2:Operation;Instr1:=(ADD AX BX,0001,AX,BX,AX);-位置关联方式位置关联方式Instr2:=(OpCode=“0010”,Mnemonic=“ADD AX BX”,OTHERS=BX);-名字关联方式名字关联方式Instr2.Mnemonic:=MUL AX BX;-对记录中单个元素赋值对记录中单个元素赋值记录类型使用示例:记录类型使用示例:5.用户定义的子类型用户定义的子类型 是对已定义的数据类型,做一些范围限制而形成的一种新是对已定义的

33、数据类型,做一些范围限制而形成的一种新的数据类型,定义格式如下:的数据类型,定义格式如下:SUBTYPE 子类型名子类型名 IS 基本数据类型基本数据类型 RANGE 约束范围约束范围例:例:subtype digit is integer range 0 to 9;subtype iobus is std_logic_vector(7 downto 0);signal addr:iobus;signal data_bus:iobus;6.数据类型之间的转换数据类型之间的转换 l VHDL 是一种强类型语言,不同数据类型的数据对象在是一种强类型语言,不同数据类型的数据对象在相互操作时必须进行转

34、换(相互操作时必须进行转换(Conversion);l 在在VHDL语言的标准程序包中,提供了一些常用的类型语言的标准程序包中,提供了一些常用的类型转换函数来实现不同数据类型之间的转换。注意,在转换函数来实现不同数据类型之间的转换。注意,在VHDL程序中要使用到那一个转换函数,必须在库及程序程序中要使用到那一个转换函数,必须在库及程序包声明中包括该程序包。包声明中包括该程序包。(1)std_logic_1164程序包提供的类型转换函数程序包提供的类型转换函数 to_stdlogicvector(a)、to_bitvector(a)、to_bit(a)、to_stdlogic(a)(2)std_

35、logic_unsigned程序包提供的类型转换函数程序包提供的类型转换函数 conv_integer(a)(3)std_logic_arith程序包提供的类型转换函数程序包提供的类型转换函数 conv_std_logic_vector(a)conv_integer(a)3.4 VHDL的运算操作符的运算操作符 在在VHDL 中包含以下四类运算操作符:中包含以下四类运算操作符:l 逻辑运算符逻辑运算符(Logical Operator)AND、OR、NAND、NOR、XOR、NOTl 关系运算符关系运算符(Relational Operator)=、/=、=l 算术运算符算术运算符(Arith

36、metic Operator)+、-、*、/等等l 并置运算符并置运算符(Concatenation Operator)&一、逻辑运算符一、逻辑运算符 逻辑运算符中,逻辑运算符中,NOT运算符的优先级最高,其他运算符运算符的优先级最高,其他运算符AND、OR、NAND、NOR、XOR 之间无优先级顺序之间无优先级顺序在在等号和不等号(等号和不等号(=和和/=)适用于所有数据类型的对象之)适用于所有数据类型的对象之间的比较。间的比较。两个位矢量类型的对象进行比较时,自左向右,按位比两个位矢量类型的对象进行比较时,自左向右,按位比较。较。信号赋值符号和小于等于符的符号都是信号赋值符号和小于等于符的

37、符号都是=,具体含义要,具体含义要根据上下文判断;根据上下文判断;从综合角度而言,简单的比较运算(从综合角度而言,简单的比较运算(=和和/=)在实现硬)在实现硬件结构时,比排序运算符构成的芯片资源利用效率要高;件结构时,比排序运算符构成的芯片资源利用效率要高;关系运算符两边的数据对象的类型必须一致(也有例外)关系运算符两边的数据对象的类型必须一致(也有例外),但位长不一定相同;,但位长不一定相同;二、关系运算符二、关系运算符n除了除了+、-、*、/之外,还有之外,还有mod(求模求模)、rem(取余取余)、*(乘方乘方)、abs(取绝对值取绝对值);n真正能综合成逻辑电路的只有真正能综合成逻辑

38、电路的只有“+”、“-”和和“*”,其它运算综合成逻辑电路很困难,其它运算综合成逻辑电路很困难;n应慎重使用乘应慎重使用乘/除法运算符。除法运算符。三、算术运算符三、算术运算符四、并置运算符四、并置运算符o并置运算符(并置运算符(&)用于位的连接;)用于位的连接;o在在VHDL中位的连接,除了可以用并置运算符外,也可中位的连接,除了可以用并置运算符外,也可用集合体连接法:用集合体连接法:signal d0,d1,d2,d3:std_logic;signal d:std_logic_vector(3 downto 0);d=d0&d1&d2&d3;d=(d0,d1,d2,d3);注意:在使用运算符时,要特别注意各运算符操注意:在使用运算符时,要特别注意各运算符操作数的数据类型和优先级作数的数据类型和优先级 The End of Chapter

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁