EDA技术VHDL语言课件

上传人:202****8-1 文档编号:242671345 上传时间:2024-08-31 格式:PPT 页数:112 大小:3.98MB
返回 下载 相关 举报
EDA技术VHDL语言课件_第1页
第1页 / 共112页
EDA技术VHDL语言课件_第2页
第2页 / 共112页
EDA技术VHDL语言课件_第3页
第3页 / 共112页
点击查看更多>>
资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,.,*,单击此处编辑母版标题样式,LOGO,LOGO,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,.,*,第二章,VHDL,语言的基本要素及基本结构,1,.,第二章 VHDL语言的基本要素及基本结构1.,第二章,VHDL,的语言要素及基本结构,要求:,1,掌握:,VHDL,的命名规则:基本标示符、下标名、段名及注释;,VHDL,对象(客体)分类定义及其性质 ;,VHDL,语言的数据类型:位、位矢量、整形数;枚举类型;,IEEE,标准的,STD_LOGIC,、,STD_LOGIC_VECTOR,;,运算操作符;,VHDL,程序的组成,VHDL,语言设计的基本单元及其构成,VHDL,构造体描述的几种方法,库及,IEEE,库中包集合的使用,2,熟悉:,VHDL,语言的其它数据类型、子程序、包集合及配置,3,了解:,标示符:扩展标识符;数据类型转换,2,.,2024/8/31,第二章 VHDL的语言要素及基本结构要求:2.2023/9/,VHDL,语言程序通常包含,5,部分:,实体说明:,entity,:,描述所设计系统的外部接口信号,是可见的。,构造体:,architecture,描述所设计系统的内部的结构和行为,,是不可见的。,配置:,configuration,选取所需单元组成系统的不同版本,包集合:,package,存放各设计模块都能共享的数据类型、常数、子程序和函数。,库:,library,存放已经编译好的实体、构造体、包集合和配置,VHDL,语言程序最基本组成是实体说明和构造体,3,.,2024/8/31,VHDL语言程序通常包含5部分:实体说明:entity:描述,VHDL,的语言要素,VHDL,的语言要素包含,客体(或对象),数据类型,操作数,运算操作符,VHDL,规定:,(,1,)不区分大小写(,“”,和,内的字符除外);,(,2,)每条语句以一个分号,;,结束;,(,3,),不,是所有语句前都可以加标号;,(,4,)一,条语句后可以加注释,在注释内容前加,两个短划线,。,4,.,2024/8/31,VHDL的语言要素VHDL的语言要素包含客体(或对象)数据类,2.1 VHDL,语言的命名规则,2.1.1,数字型文字,(,1,)整数文字,(,2,)实数文字,(,3,)以数制基数表示的文字,格式:数制,#,数值,#,指数值,例如:,10#170#E1-,十进制,1700,16#FE#-,十进制,254,2#1101_0001#-,十进制,209,8#376#-,十进制,254,16#E#E1-,(,十六进制数表示,,14*16,1,等于,224),(4),物理量文字,(VHDL,综合器不接受此类文字,),。,60 s(60,秒,),,,100 m(100,米,),,,k(,千欧姆,),,,177 A(177,安培,),5,.,2024/8/31,2.1 VHDL语言的命名规则2.1.1 数字型文字5.2,2.1.2,字符串型文字,字符串型文字包含文字字符串、数位字符串,数位字符串:位矢量,由数据类型为,BIT,的元素组成的一维数组,书写格式:基数符“数值”,基数符:,B,二进制数;,O,八,进制数;,X,十,六进制数,例如:,data1 = B “1_1101_1110”;,data2 = O “15” ;,data3 = X “AD0”;,data4 = B “101_010_101_010”;,data5 = “101_010_101_010” ;,-,表达错误,缺,B,;,data5 = “101010101010” ; -,表达正确,没有“,_”,默 认为二进制数;,data6 = “0AD0”;,-,表达错误,缺,X,6,.,2024/8/31,2.1.2 字符串型文字字符串型文字包含文字字符串、数位字,2.1.3,标识符,用来定义,实体、结构体、对象(常数、变量、信号)、端口、子程序、语句标号或参数,的名字。,VHDL,的基本标识符书写遵循规则:,由,26,个大小写英文字母、数字,0,9,以及下划线“,_”,组成;,以英文字母开头;,不连续使用下划线“,_”,,不以下划线“,_”,结尾的;,标识符中的英语字母不分大小写;,VHDL,的保留字(或关键字)不能作为标识符使用。,VHDL 93,标准还支持扩展标识符,但是目前仍有许多,VHDL,工具不支持扩展标识符。由一对反斜杠之间的任何字符序列组成,取消了标准标示符的所有限制。,合法标示符:,Decoder_1 , FFT , Sig_N , Not_Ack , State0 , Idle,非法标识符,:,_,Decoder_1 ,2,FFT , Sig_,#,N , Not,-,Ack ,RyY_RST,_, data,_,_,BUS ,return,7,.,2024/8/31,2.1.3 标识符用来定义实体、结构体、对象(常数、变量、,2.1.4,下标名,下标名指的是数组型变量或信号的某一个元素。,格式:标示符(表达式),标识符,必须是数组型的变量或信号的名字,,表达式,所代表的值必须是数组下标范围中的一个值,这个值将对应数组中的一个元素。,例如:,SIGNAL,a,,,b,:,BIT_VECTOR,(,0 TO 3,);,SIGNAL,m,:,INTEGER RANGE 0 TO 3,;,SIGNAL,y,,,z,:,BIT,;,y = a (m),;,- -,不可计算型下标表示,z = b (3 ),;,- -,可计算型下标表示,8,.,2024/8/31,2.1.4 下标名下标名指的是数组型变量或信号的某一个元素,2.1.5,段名,段名是多个下标名的组合,对应数组中某一段的元素,格式:标示符(表达式 方向 表达式),方向:,TO,或,DOWNTO,SIGNAL,a,,,z,:,BIT_VECTOR,(,0,TO,7,),;,Signal,b:bit_vector(4,downto,0);,z,(,0,TO,3,),= a,(,4,TO,7,) ;,-z,(0),= a,(4),、,z,(1),= a(5),9,.,2024/8/31,2.1.5 段名段名是多个下标名的组合,对应数组中某一段的,2.2 VHDL,的数据类型及运算操作符,VHDL,语言同其它语言一样有多种数据类型和运算符,且它们的定义也大多相同。,VHDL,语言的特点是用户可以,自己定义数据类型。,如:,type,count,is,integer RANGE 0 to 10;,10,.,2024/8/31,2.2 VHDL的数据类型及运算操作符VHDL语言同其它语,2.2.1 VHDL,客体(对象)及其分类,客体,(,对象,) :可以赋予一个值的对象或者是数据类型所定义的对象。,客体主要包括,3,类,信号,:,变量,:,常数,:,代表元件间的硬件连接线,全局变量,代表暂存某一值的载体,局部变量,数字电路中的电源和地等,全局变量,物理意义,11,.,2024/8/31,2.2.1 VHDL客体(对象)及其分类客体(对象) :可,1,、,VHDL,语言对象(客体),常数,一般某一值在程序中多处用到,为了增加程序的可读性、可修改性,给该常数定义一个常数名,在书写程序时用定义的常数名代替该常数。,可以在实体、结构体、程序包、块、进程和子程序中定义(说明)。,在包集合中定义的常量可以暂不设具体数值,它可以在包体中设定。,常量的使用范围取决于它被定义的位置,程序包:,实体:,构造体:,块:,由调用该程序包中的任何实体、构造体引用,仅作用于该实体,仅作用于该构造体,仅作用于该块,进程:,仅作用于该进程,子程序:,仅作用于该子程序,12,.,2024/8/31,1、VHDL语言对象(客体)常数一般某一值在程序中多处用到,1,、,VHDL,语言,对象,(,客体,),常数,常数说明的一般格式:,CONSTANT,常量名:数据类型,=,表达式;,如:,CONSTANT,FBUSBIT_VECTOR=“0101”,;,CONSTANT,VCCREAL=5.0,;,CONSTANT,DELYTIME=25 ns,;,注意:,常数被赋值的类型一定要和定义的数据类型一致,如第二条语句中的,5.0,若变为,5,则不正确。,13,.,2024/8/31,1、VHDL语言对象(客体)常数常数说明的一般格式:13.,2,、,VHDL,语言客体,变量,是一个局部量,只能在进程和子程序,(,过程和函数,),中定义和使用。,变量不能将信息带出对它作出定义的当前设计单元。,变量在硬件中没有明确的对应物,只是对数据暂存。,变量的赋值是立即发生,不存在任何延时的行为。,常用在实现某种算法的赋值语句中,赋值符号为“,:=”,变量说明语句格式:,variable,变量名,1,,变量名,2,,,:数据类型,约束条件:,=,表达式,;,注意:,1,、语句中用, ,括起部分可有可无,2,、表达式:给变量赋初值,3,、变量赋值符号为“,:=,”,4,、变量赋值立即生效,因此变量赋值不能够加延时条件,5,、逻辑综合时初值无效,6,、多个变量具有相同的数据类型和约束条件时可以在同一条变量定义语句中定义,14,.,2024/8/31,2、VHDL语言客体变量是一个局部量,只能在进程和子程序(,变量定义赋值举例,Variable,x,y:integer,;,Variable,x:integer range 0 to 255:=10,;,Variable,temp1,temp2:integer,;,变量赋值语句:,变量定义语句:,Temp1:=temp2,;,Temp1:=temp2 after 10ns,; 此语句对吗?,15,.,2024/8/31,变量定义赋值举例Variable x,y:integer;V,3,、,VHDL,语言客体,信号,信号可以作为模块间的信息交流通道,与硬件中互连元件端口的的连线相对应;,信号及其相关的语句描述了硬件系统的基本特征;,如硬件系统运行的并行性;信号传输过程中的惯性延时特性;多驱动源的总线行为等。信号赋值不立即生效,信号的定义格式如下:,SIGNAL,信号名: 数据类型 约束条件,=,初始值;,初始值仅在,VHDL,的行为仿真中有效,逻辑综合无效,信号代入符号为“,=”,但是赋初值符号为“:,=”,信号赋值不立即生效,因此信号代入能够加延时条件,多个信号具有相同的数据类型和约束条件时可以在同一条信号定义语句中定义,具有全局性特性,可以在以下区域定义和使用:,实体:作用于该实体中所有的结构体,结构体:作用于整个结构体,包集合:作用于调用此包集合的所有实体,除了没有方向说明以外,信号与实体的端口,(PORT),概念是一致的。,16,.,2024/8/31,3、VHDL语言客体信号信号可以作为模块间的信息交流通道,,VHDL,语言客体,信号,SIGNAL,Sys_clk,:,bit= 0,;,-,定义了一个位,BIT,的信号,S1,,初始值为低电平,SIGNAL,ground,:,BIT=0,;,-,定义了一个位,BIT,的信号,ground,,初始值为低电平,以上两条信号定义语句可以改写成一条信号定义语句:,Signal,Sys_clk,ground,:,STD_LOGIC= 0,;,SIGNAL,S4,:,STD_LOGIC_VECTOR(15 DOWNTO 0),;,-,定义了一个标准逻辑位矢量,(,数组、总线,),信号,共有,16,个元素,SIGNAL,S5,:,integer range 0 to 9;,;,-,定义了一整型数据类型的信号,s5,,其取值只能是,0,到,9,的整数,信号赋值可以加延时条件:,SIGNAL,S1bit,;,SIGNAL,s2 :bit,;,S2=s1 after 10 ns;,17,.,2024/8/31,VHDL语言客体信号SIGNAL Sys_clk:bit,4,、信号、变量、常量的比较,从硬件电路系统来看,常量相当于电路中的恒定电平,如,GND,或,VCC,接口,变量和信号则相当于组合电路系统中门与门间的连接及其连线上的信号值。,从行为仿真和,VHDL,语句功能上看,信号可以设置延时量,而变量则不能;,变量只能作为局部的信息载体,而信号则可作为模块间的信息载体。,变量的设置有时只是一种过渡,最后的信息传输和界面间的通信都靠信号来完成。,18,.,2024/8/31,4、信号、变量、常量的比较从硬件电路系统来看18.2023/,信号、变量、常量的比较,从综合后所对应的硬件电路结构来看,信号将对应更多的硬件结构,变量在硬件上一般没有对应实物。,VHDL,综合器并不理会它们在接受赋值时存在的延时特性。,VHDL,仿真器允许变量和信号设置初始值,但在实际应用中,,VHDL,综合器并不会把这些信息综合进去。,因为实际的,FPGA/CPLD,芯片在上电后,并不能确保其初始状态的取向。因此,对于时序仿真来说,设置的初始值在综合时是没有实际意义的。,19,.,2024/8/31,信号、变量、常量的比较从综合后所对应的硬件电路结构来看19.,D,触发器的四种不同描述,Entity dff1 is,port(clk,d:in bit;,q:out bit);,End dff1;,Architecture bhv of dff1 is,Begin,D1:process(clk),variable qq:bit;,Begin,if clkevent and clk=1 then,qq:=d;,q=qq;,end if;,End process;,End bhv;,Entity dff2 is,port(clk,d:in bit;,q:out bit);,End dff2;,Architecture bhv of dff2 is,signal qq:bit;,Begin,D1:process(clk),Begin,if clkevent and clk=1 then,qq=d;,end if;,End process;,q=qq;,End bhv;,d,clk,q,Dff1,d,clk,q,Dff2,dff1,综合后的结果,dff2,综合后的结果,20,.,2024/8/31,D触发器的四种不同描述Entity dff1 isEntit,D,触发器的四种不同描述,Entity dff3 is,port(clk,d:in bit;,q:out bit);,End dff3;,Architecture bhv of dff3 is,Begin,D1:process(clk),variable a,b:bit;,Begin,if clkevent and clk=1 then,a=d;,b:=a;,q=b;,end if;,End process;,End bhv;,d,clk,q,Dff3,Dff4,Entity dff4 is,port(clk,d:in bit;,q:out bit);,End dff4;,Architecture bhv of dff4 is,signal a,b:bit;,Begin,D1:process(clk),Begin,if clkevent and clk=1 then,a=d;,b=a;,q=b;,end if;,End process;,End bhv;,d,clk,q,d,clk,q,d,clk,q,a,b,Dff3,综合后结果,Dff4,综合后结果,21,.,2024/8/31,D触发器的四种不同描述Entity dff3 isdclkq,5,、信号和变量使用的区别,赋值(代入)语句的符号不同,:,:,=,变量赋值符号,=,信号代入符号,操作过,程不同,:,变量在上一条语句赋值,下一条语句即可使用。变量不能列入进程语句的敏感表,。,信号代入语句的处理和代入过程是分开进行的。信号语句即使被处理也不会立即发生代入,下一条语句用到该信号,仍使用原来的信号值。,在进程语句中,当进程结束或遇到,wait,语句时,信号代入过程才被执行。,信号可以列入进程的敏感表,22,.,2024/8/31,5、信号和变量使用的区别赋值(代入)语句的符号不同:=,例,2-5,Process(A,B,C,D),Begin,D=A;,X=B+D;,D=C;,Y=B+D;,End process;,Process(A,B,C),Variable D:std_logic_vector(3 downto 0);,Begin,D:=A;,X=B+D;,D:=C;,YB),的结果是布尔量,TRUE,,反之为,FALSE,。综合器将其变为,1,或,0,信号值,对应于硬件系统中的一根线,布尔类型的变量或信号只可以进行关系运算,。,例如:,SIGNAL flag,:,boolean;,flagtodaytodaytodayeatable eatable eatable =egg;,end case;,End process;,End behave;,41,.,2024/8/31,例如Architecture behave of menu,2,)用户自定义类型,整数类型和实数类型,目的:,标准的程序包中的定义取值定义范围太大,综合器综合结果占有资源太多。,用户根据实际的需要限定其取值范围,以便能使综合器更好的综合。,定义格式:,TYPE,数据类型名,IS,数据类型定义 约束范围;,约束范围:,range,(数据范围,),如:,TYPE digit IS INTEGER RANGE 0 TO 9;,如:,TYPE current IS REAL RANGE -1E4 TO 1E4;,42,.,2024/8/31,2)用户自定义类型整数类型和实数类型目的:42.2023,3,)用户自定义类型,数组类型,数组:,是将一组具有,相同数据类型,的元素集合在一起,作为一个数据对象来处理的数据类型。,可以是一维,(,每个元素只有一个下标,),或多维,(,每个元素有多个下标,),。,VHDL,仿真器都支持,但,VHDL,综合器只支持一维数组。,VHDL,允许定义两种不同类型的数组:,限定性数组和非限定性数组,限定性数组:下标的取值范围在数组定义时就被确定;,非限定性数组:下标的取值范围需留待随后根据,具体数据对象再确定。,43,.,2024/8/31,3)用户自定义类型数组类型数组:43.2023/9/5,限定性数组定义语句格式如下:,type,数据类型名,is array,范围,of,原数据类型;,如:,TYPE,word,IS ARRAY,(1 TO 8),OF STD_LOGIC,;,数据类型名称是,word,,,8,个元素,下标排序是,1,,,2,,,3,,,4,,,5,,,6,,,7,,,8,,各元素的排序是,word(1),,,word(2),,,,,word(7),,,word(8),。每个元素的数据类型为,std_logic,。,注意,:,若范围一项的数据类型没有,则默认,integer,类型,若用其它数据类型指定范围,应在指定范围前加数据类型名,新定义的限定性数组类型的名称,可以是任何标识符;,指出数组元素数量和排序方式,一般用整数来表示其范围;,指数组各元素的数据类型,用户自定义类型,数组类型:限定性数组,44,.,2024/8/31,限定性数组定义语句格式如下:type 数据类型名 is a,用户自定义类型,数组类型:限定性数组,用其它的数据类型指定范围举例:,TYPE instruction IS (ADD, SUB, INC, SRL, SRF, LDA, LDB, XFR);,SUBTYPE digit IS INTEGER range 0 TO 9;,TYPE insflag IS ARRAY (instruction ADD TO SRF) OF digit,;,这数组有五个元素,元素的下标是,ADD,到,SRF,每个元素数据类型是,digit,。,数组常在总线、,ROM,和,RAM,中使用。,例如:设计一个,2568,的,ROM,存储器,Subtype,word,is,std_logic_vector(7 dowmto 0);,Type,memory,is array,(,0 to 255),of,word;,Varaible,rom:memory;,45,.,2024/8/31,用户自定义类型数组类型:限定性数组用其它的数据类型指定范,用户自定义类型,数组类型:非限制性数组,格式:,TYPE,数组名,IS ARRAY (,数组下标类型,RANGE) OF,数据类型;,TYPE STD_LOGIC_VECTOR IS ARRAY(NATURAL RANGE) OF STD_LOGIC,;,VARABLE VA,:,STD_LOGIC _VECTOR(0 TO 6),;,(,具体数据对象,),46,.,2024/8/31,用户自定义类型数组类型:非限制性数组格式:TYPE 数组,二维数组,定义格式:,Type,数据类型,名,is array,(,行范围,列范围,),of,原数据类型;,例如:,TYPE memory IS ARRAY (,0 TO 5, 7 DOWNTO 0,) OF STD_LOGIC;,CONSTANT romdata : memory :=,(0, 0, 0, 0, 0, 0, 0, 0),(0, 1, 1, 1, 0, 0, 0, 1),(0, 0, 0, 0, 0, 1, 0, 1),(1, 0, 1, 0, 1, 0, 1, 0),(1, 1, 0, 1, 1, 1, 0, 0),(1, 1, 1, 1, 1, 1, 1, 1);,Signal data_bit:STD_LOGIC;,Data_bit=romdata(3,7);,47,.,2024/8/31,二维数组定义格式:47.2023/9/5,4,)用户自定义类型,记录类型,由已定义的、,数据类型不同,的对象元素构成的数组,语句格式:,TYPE,记录类型名,IS RECORD,元素名 : 元素数据类型;,元素名 : 元素数据类型;,END RECORD ,记录类型名,;,48,.,2024/8/31,4)用户自定义类型记录类型由已定义的、数据类型不同的对象,用户自定义类型,记录类型举例,TYPE bank IS RECORD -,将,bank,定义为四元素记录类型,addr0STD_LOGIC_VECTOR(7 DOWNTO 0),;,addr1STD_LOGIC_VECTOR(7 DOWNTO 0),;,r0INTEGER;,instinstruction,;,(,假设是以前定义好的枚举数据类型,),END RECORD,;,SIGNAL addbus1, addbus2: STD_LOGIC_VECTOR(7 DOWNTO 0),;,SIGNAL result: INTEGER,;,SIGNAL alu_code: instruction;,SIGNAL r_bank : bank := (“00000000”, ”00000000”, 0, ADD);,addbus1 = r_bank.addr1;,r_bank.inst = alu_code;,49,.,2024/8/31,用户自定义类型记录类型举例TYPE bank IS RE,3,、用户定义的子类型,子类型是由用户对,已定义的原数据类型,做一些范围限制而形成的一种新的数据类型。,子类型,SUBTYPE,的语句格式如下:,Subtype,子类型名,is,基本数据类型名,范围,;,例如:,subtype,abus,is,std_logic_vector(7 downto 0);,signal,aio: std_logic_vector(7 downto 0);,signal,bio: std_logic_vector(15 downto 0);,signal,cio: abus;,aio=cio;,bio=cio;,对吗?,50,.,2024/8/31,3、用户定义的子类型子类型是由用户对已定义的原数据类型做一些,5,、数据类型的限定,数据类型可以根据所描述的文字的上下关系来判断,SIGNAL a: STD_LOGIC_VECTOR( 7 DOWNTO 0);,a Y Y = “10111111”;,END CASE;,限定方法,SUBTYPE STD3BIT IS STD_LOGIC_VECTOR ( 0 TO 2),;,CASE STD3BIT(a & b & c) IS,-,限定(,a & b & c,)的类型为,STD3BIT,-,限定方法:,数据类型名对象名,51,.,2024/8/31,5、数据类型的限定数据类型可以根据所描述的文字的上下关系来判,6,、,IEEE,标准,STD_LOGIC,和,STD_LOGIC_VECTOR,在,IEEE,库的程序包,STD_LOGIC_1164,中,定义了两个非常重要的数据类型,即标准逻辑位,STD_LOGIC,和标准逻辑矢量,STD_LOGIC_VECTOR,。,它们是对,bit,和,bit_vector,两种数据类型的补充。,Bit,只有,0,和,1,两种状态。,标准逻辑位,STD_LOGIC,在,STD_LOGIC_1164,包集合中的定义的语句如下:,TYPE STD_LOGIC IS (U,,,X,,,0,,,1,,,Z,,,W,,,L,,,H,,,-),;,U-,未初始化的,,X-,强不定态,,0-,强,0,,,1-,强,1,,,Z-,高阻态,,W-,弱不定态,,L-,弱,0,,,H-,弱,1,,,-,忽略,标准逻辑矢量,STD_LOGIC_VECTOR(,二进制,),他是由一组,STD_LOGIC,元素组成的一维数组;,在,STD_LOGIC_1164,包集合中的定义的语句如下:,TYPE STD_LOGIC_VECTOR IS ARRAY (NATURAL RANGE) OF STD_LOGIC,;,52,.,2024/8/31,6、IEEE标准STD_LOGIC和STD_LOGIC_VE,注意:,(,1,),Bit_vector,:,可以是二进制数,也可以是十六进制数或八进制;还可使用“,_”,将二进制数隔开。,(,2,),Std_logic_vector,:,只能是二进制数。,(,3,)在使用时,必须在程序的开头说明包含着两种数据类型的包集合和包集合所在的库。,Library ieee;,Use IEEE.std_logic_1164.all;,53,.,2024/8/31,注意:(1)Bit_vector:可以是二进制数,也可以是十,4,、数据类型的转换,VHDL,是一种强类型语言,即使对于数据类型非常接近的数据对象,在相互操作时,也需要进行数据类型转换。,类型转换函数,通常由,VHDL,语言包集合提供,54,.,2024/8/31,4、数据类型的转换VHDL是一种强类型语言54.2023/9,STD_LOGIC_1164,包集合,中定义的数据类型转换函数及对应的数据类型转换如下:,to_stdlogicvector(A),to_bitvector(A),to_stdlogic(A),to_bit(A),由,bit_vector,转换成,std_logic_vector,由,std_logic_vector,转换成,bit_vector,由,bit,转换成,std_logic,由,std_logic,转换成,bit,变换函数通常由三个包集合提供:,在,VHDL,语言中,不同类型的数据是不能进行运算和代入的,要实现这些操作必须进行数据类型的转换。,4,、数据类型的转换(续),55,.,2024/8/31,STD_LOGIC_1164包集合 中定义的数据类型转换函数,STD_LOGIC_ARITH,包集合,中定义的数据类型转换函数集对应的数据类型转换如下:,conv_std_logic_vector(A,位长,),conv_integer(A),由,integer,unsigned,和,signed,转换成,std_logic_vector,由,unsigned,和,signed,转换成,integer,STD_LOGIC_UNSIGNED,包,集合,定义的数据类型转换函数集对应的数据类型转换如下:,conv_integer(A),由,std_logic_vector,转换成,integer,4,、数据类型的转换(续),56,.,2024/8/31,STD_LOGIC_ARITH包集合中定义的数据类型转换函数,数据类型转换举例,LIBRARY,IEEE,;,USE IEEE.STD_LOGIC_1164.ALL,;,USE IEEE.STD_LOGIC_UNSIGNED.ALL,;,ENTITY add5 IS,PORT(num: IN STD_LOGIC_VECTOR(2 DOWNTO 0);,END add5;,ARCHITECTURE rtl OF add5 IS,SIGNAL in_num: INTEGER RANGE 0 TO 7;,BEGIN,In_num=,,,,,,,/=,,,=,并置运算符:,&,六种移位操作符号,SLL,、,SRL,、,SLA,、,SRA,、,ROL,和,ROR,是,VHDL93,标准新增的运算符。,省略赋值操作符,:(,OTHERS=X,),58,.,2024/8/31,2.2.3 VHDL语言的运算操作符算术运算符:REM,MO,运算符的优先级,书,P43,页 表,2-5,中运算符一项中每一行的优先级相同。,六种移位操作符号,SLL,、,SRL,、,SLA,、,SRA,、,ROL,和,ROR,优先级高于一般的关系运算符。,59,.,2024/8/31,运算符的优先级书P43 页 表2-5中运算符一项中每一行的优,1,、逻辑运算符,注意:,(,1,)只可以对,std_logic,,,std_logic_vector,,,bit,,,bit_vector,boolean,型数据进行逻辑运算。,(,2,)运算符的左右及代入的信号数据类型必须相同。,(,3,)在一个语句中,若有两个以上的逻辑表达式时,有时需在相应的表达式中加括号。,例如:,X,=(a and b) or (not c and d);,(4),如果一个逻辑表达式中只有,AND,OR,XOR,运算符,括号可省略。其他不行。例如:,A=(b nand c) nand d) nand e,;,1011,A=,,,,,,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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