第三章 VHDL语言的数据类型及运算操作符.ppt
《第三章 VHDL语言的数据类型及运算操作符.ppt》由会员分享,可在线阅读,更多相关《第三章 VHDL语言的数据类型及运算操作符.ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章VHDL语言的数据类型及运算操作符3.1 VHDL语言的客体及其分类 在在VHDL VHDL 语言中,可以赋予一个值的的对语言中,可以赋予一个值的的对象就称为客体或对象,它接受不同数据类型的象就称为客体或对象,它接受不同数据类型的赋值赋值 。对象主要包括以下对象主要包括以下3 3种:种:信号信号(SIGNAL)(SIGNAL):对应物理意义上是实际电:对应物理意义上是实际电路连接线。说明全局量路连接线。说明全局量 变量变量(VARIABLE)(VARIABLE):相当于暂存寄存器,变:相当于暂存寄存器,变量值不是最终的结果。说明局部量量值不是最终的结果。说明局部量 常数常数(CONSTA
2、NTCONSTANT):如电源、地等,用来:如电源、地等,用来描述固定的值。描述固定的值。说明全局量说明全局量3.1.1常数(Constant)n n常量是指在设计实体中不会发生变化的值,它可常量是指在设计实体中不会发生变化的值,它可以在很多部分进行说明,并且可以是任何数据类以在很多部分进行说明,并且可以是任何数据类型。型。n n 常量的定义和设置主要是为了使设计实体中的常量的定义和设置主要是为了使设计实体中的常数更容易阅读和修改。常数更容易阅读和修改。例如,将位矢的宽度定例如,将位矢的宽度定义为一个常量,只要修改这个常量就能很容易地义为一个常量,只要修改这个常量就能很容易地改变宽度,从而改变
3、硬件结构。改变宽度,从而改变硬件结构。在程序中,常量在程序中,常量是一个恒定不变的值,一旦作了数据类型的赋值是一个恒定不变的值,一旦作了数据类型的赋值定义后,在程序中不能再改变,因而具有全局意定义后,在程序中不能再改变,因而具有全局意义。义。格式:格式:CONSTANT CONSTANT 常数名:数据类型:表达式;常数名:数据类型:表达式;例:例:CONSTANT VCC:REAL:=5.0;CONSTANT VCC:REAL:=5.0;CONSTANT DALY:TIME:=100ns;CONSTANT DALY:TIME:=100ns;CONSTANT BUS:BIT_VECTOR:=“1
4、010 CONSTANT BUS:BIT_VECTOR:=“1010”CONSTANT G1 CONSTANT G1:BITBIT:1;1;数据类型和表达式表示的数据类型应该一致。数据类型和表达式表示的数据类型应该一致。表示是位信息,表示是位信息,而而“”“”表示的是位表示的是位矢量信息。矢量信息。n n 常量定义语句所常量定义语句所允许允许的设计单元有的设计单元有实体、结构实体、结构体、程序包、块、进程和子程序体、程序包、块、进程和子程序。在程序包中定。在程序包中定义的常量可以暂不设具体数值,它可以在程序包义的常量可以暂不设具体数值,它可以在程序包体中设定。体中设定。n n 常量的可视性,即
5、常量的使用范围取决于它被常量的可视性,即常量的使用范围取决于它被定义的位置。在程序包中定义的常量具有最大全定义的位置。在程序包中定义的常量具有最大全局化特征,可以用在调用此程序包的所有设计实局化特征,可以用在调用此程序包的所有设计实体中;体中;定义在设计实体中的常量,其有效范围为定义在设计实体中的常量,其有效范围为这个实体定义的所有的结构体这个实体定义的所有的结构体;定义在设计实体;定义在设计实体的某一结构体中的常量,则只能用于此结构体;的某一结构体中的常量,则只能用于此结构体;定义在结构体的某一单元的常量,如一个进程中,定义在结构体的某一单元的常量,如一个进程中,则这个常量只能用在这一进程中
6、。则这个常量只能用在这一进程中。总结:n n在运行中不变,若要改变必须要改变设计,也就是说改变常量说明,重新编译。n n常量必须在程序的实体、结构体或过程的说明区中,对其标识符类型常量值进行指定。n n定义在实体中的常量仅在实体中使用。以此类推。3.1.2变量(Variable)变量是局部变量,只能在进程、过程、函数中使用变量是局部变量,只能在进程、过程、函数中使用和定义。和定义。格式:格式:VARIABLE VARIABLE 变量名:数据类型变量名:数据类型 约束条件:约束条件:表达式;表达式;例:例:VARIABLE VARIABLE x,y:INTEGERx,y:INTEGER VARI
7、ABLE VARIABLE x,y:INTEGERx,y:INTEGER RANGE 0 TO 255:=10 RANGE 0 TO 255:=10 在程序中,变量的赋值是立即生效的,不能产生附加在程序中,变量的赋值是立即生效的,不能产生附加延时。延时。tmp1:=tmp2+tmp3 AFTER 10ns tmp1:=tmp2+tmp3 AFTER 10ns n n变量作为局部量,其适用范围仅限于定义了变变量作为局部量,其适用范围仅限于定义了变量的进程或子程序中。仿真过程中惟一的例外量的进程或子程序中。仿真过程中惟一的例外是共享变量。变量的值将随变量赋值语句的运是共享变量。变量的值将随变量赋值
8、语句的运算而改变。变量定义语句中的初始值可以是一算而改变。变量定义语句中的初始值可以是一个与变量具有相同数据类型的常数值,也可以个与变量具有相同数据类型的常数值,也可以是一个全局静态表达式,这个表达式的数据类是一个全局静态表达式,这个表达式的数据类型必须与所赋值变量一致。型必须与所赋值变量一致。此初始值不是必需此初始值不是必需的,综合过程中综合器将略去所有的初始值。的,综合过程中综合器将略去所有的初始值。n n变量数值的改变是通过变量赋值来实现的,其变量数值的改变是通过变量赋值来实现的,其赋值语句的语法格式如下:赋值语句的语法格式如下:n n 目标变量名目标变量名:=:=表达式;表达式;总结:
9、总结:n n(1)变量值是直接的,在某一时刻,仅包含一个值。n n(2)赋值和初始化符号 :n n(3)变量不能表示连线或存贮元件3.1.3 信号(Signal)n n信号是描述硬件系统的基本数据对象,信号是描述硬件系统的基本数据对象,它类似于连接线它类似于连接线。信号可。信号可以作为设计实体中并行语句模块间的信息交流通道。在以作为设计实体中并行语句模块间的信息交流通道。在VHDLVHDL中,中,信号及其相关的信号赋值语句、决断函数、延时语句等很好地描信号及其相关的信号赋值语句、决断函数、延时语句等很好地描述了硬件系统的许多基本特征。如硬件系统运行的并行性;信号述了硬件系统的许多基本特征。如硬
10、件系统运行的并行性;信号传输过程中的惯性延时特性;多驱动源的总线行为等。传输过程中的惯性延时特性;多驱动源的总线行为等。n n信号作为一种数值容器,不但可以容纳当前值,也可以保持历史信号作为一种数值容器,不但可以容纳当前值,也可以保持历史值。这一属性与触发器的记忆功能有很好的对应关系。值。这一属性与触发器的记忆功能有很好的对应关系。n n信号初始值的设置不是必需的,而且初始值仅在信号初始值的设置不是必需的,而且初始值仅在VHDLVHDL的行为仿的行为仿真中有效。真中有效。n n与变量相比,信号的硬件特征更为明显,它具有与变量相比,信号的硬件特征更为明显,它具有全局性特性全局性特性。n n信号的
11、说明通常在信号的说明通常在ARCHITECTUREARCHITECTURE、PACKAGEPACKAGE、ENTITYENTITY中进中进行的。行的。n n信号的定义格式如下:信号的定义格式如下:信号的定义格式如下:信号的定义格式如下:n n SIGNAL SIGNAL 信号名:信号名:信号名:信号名:数据类型数据类型数据类型数据类型 约束条件约束条件约束条件约束条件:=:=初始值;初始值;初始值;初始值;n n示例:示例:示例:示例:n nSIGNAL S1SIGNAL S1:STD_LOGIG:=0STD_LOGIG:=0;-定义了一个标准位的单值信号定义了一个标准位的单值信号S1S1,初
12、始值,初始值为低电平为低电平n nSIGNAL S2SIGNAL S2,S3S3:BITBIT;-定义了两个为定义了两个为BITBIT的信号的信号S2S2和和S3S3n nSIGNAL S4SIGNAL S4:STD_LOGIC_VECTOR(15 STD_LOGIC_VECTOR(15 DOWNTO 0)DOWNTO 0);-定义了一个标准位矢的位矢量定义了一个标准位矢的位矢量(数组、总数组、总线线)信号,共有信号,共有1616个信号元素个信号元素n n以下示例定义的信号数据类型是设计者自行定义的,这是VHDL所允许的:n n TYPE FOUR IS(X,0,I,Z);n n SIGNAL
13、 S1FOUR;n n SIGNAL S2FOUR:=X;n n SIGNAL S3FOUR:=L;总结:n n信号大多数均是在实体或结构体的说明区加以说明n n信号赋值语句 “=”符号n n重要应用:信号可以在状态机中表示变量n n端口说明中的对象均为信号类型3.1.4信号与变量的区别 信号赋值至少有信号赋值至少有 延时;而变量赋值没有延时。延时;而变量赋值没有延时。信号除当前值外有许多相关的信息;而变量只有当前值。信号除当前值外有许多相关的信息;而变量只有当前值。进程对信号敏感而不对变量敏感进程对信号敏感而不对变量敏感。信号可以是多个进程的全局信号;而变量只在定义它们的顺序域信号可以是多个
14、进程的全局信号;而变量只在定义它们的顺序域可见(共享变量除外)。可见(共享变量除外)。信号是硬件中连线的抽象描述,它们的功能是保存变化的数据和信号是硬件中连线的抽象描述,它们的功能是保存变化的数据和连接子元件,信号在元件的端口连接元件。变量在硬件中没有类连接子元件,信号在元件的端口连接元件。变量在硬件中没有类似的对应关系,它们用于硬件特性的高层次建模所需要的计算中。似的对应关系,它们用于硬件特性的高层次建模所需要的计算中。信号赋值和变量赋值分别使用不同的赋值符号信号赋值和变量赋值分别使用不同的赋值符号“=”=”和和“:”;允许两者之间相互赋值,但要保证两者的类型相同。对于信号;允许两者之间相互
15、赋值,但要保证两者的类型相同。对于信号赋值来说,在信号赋值的执行和信号值的更新之间至少有赋值来说,在信号赋值的执行和信号值的更新之间至少有 延时,延时,只有延迟之后才能得到新值,否则保持原值;而对于变量来说,只有延迟之后才能得到新值,否则保持原值;而对于变量来说,赋值没有延迟,变量在赋值语句执行后立即得到新值。赋值没有延迟,变量在赋值语句执行后立即得到新值。n n例31:PROCESS(A,B,C,D)BEGIN D=A;X=B+D;D=C;Y=B;END PROCESS结果:结果:X=B+C;n n例例3 32 2:PROCESS(A,B,C)PROCESS(A,B,C)VARIABLE D
16、:STD_LOGIC_VECTOR(3DOWNTO 0)VARIABLE D:STD_LOGIC_VECTOR(3DOWNTO 0)BEGINBEGIN D:=A;D:=A;X:=B+D;X:=B+D;D:=C;D:=C;Y:=B;Y:=B;END PROCESSEND PROCESS结果:结果:X=B+A;3.2 VHDL语言的数据类型n nVHDL是一种强类型语言,要求设计实体中的每一个常数、信号、变量、函数以及设定的各种参量都必须具有确定的数据类型,并且只有数据类型相同的量才能互相传递和作用。VHDL作为强类型语言的好处是能使VHDL编译或综合工具很容易地找出设计中的各种常见错误。VHD
17、L中的数据类型可以分成以下几大类:标准的数据类型、用户自定义的数据类型、用户自定义的子类型。3.2.1 标准的数据类型 1 1:整数:整数 2 2:实数:实数 3 3:位:位 4 4:位矢量:位矢量 5 5:布尔量:布尔量 6 6:字符:字符 7 7:时间:时间 8 8:错误等级:错误等级 9 9:自然数,正整数:自然数,正整数 1010:字符串:字符串1、整数(INTEGER)n n整数类型的数代表正整数、负整数和零。整数类型的数代表正整数、负整数和零。取值取值范围为范围为-(231-1231-1)()(231-1231-1),主要用主要用于表示总线(如多位计数器的输出)的状态于表示总线(如
18、多位计数器的输出)的状态,不不能直接按位来操作能直接按位来操作,也不能进行逻辑运算。也不能进行逻辑运算。n n整数常量的书写方式示例如下:整数常量的书写方式示例如下:n n2 2 -十进制整数十进制整数n n10E4 -10E4 -十进制整数十进制整数n n16#D2#-16#D2#-十六进制整数十六进制整数n n2#11011010#2#11011010#-二进制整数二进制整数2、实数(REAL)数据类型 n nVHDLVHDL的实数类型类似于数学上的实数,或称浮点数。实的实数类型类似于数学上的实数,或称浮点数。实数的取值范围为数的取值范围为-1.0E+38-1.0E+38+1.0E+38+
19、1.0E+38。通常情况下,。通常情况下,实数类型仅能在实数类型仅能在VHDLVHDL仿真器中使用,仿真器中使用,VHDLVHDL综合器不支综合器不支持实数,因为实数类型的实现相当复杂,目前在电路规模持实数,因为实数类型的实现相当复杂,目前在电路规模上难以承受。主要用于硬件方案的研究或实验。上难以承受。主要用于硬件方案的研究或实验。n n实数常量的书写方式举例实数常量的书写方式举例 n n65971.333333 65971.333333 -十进制浮点数十进制浮点数n n8#43.6E+4#8#43.6E+4#-八进制浮点数八进制浮点数n n43.6E-4 43.6E-4 -十进制浮点数十进制
20、浮点数3、位(BIT)数据类型 n n 位数据类型也属于枚举型,取值只能是1或0。位数据类型的数据对象,如变量、信号等,可以参与逻辑运算,运算结果仍是位的数据类型。VHDL综合器用一个二进制位表示BIT。在程序包STANDARD中定义的源代码是:n n TYPE BIT IS(0,1);4、位矢量(BIT_VECTOR)数据类型 n n是用双引号括起来的一组位数据是用双引号括起来的一组位数据,每位只有两种每位只有两种取值取值:0:0和和1 1。在其前面可以加上数制标记在其前面可以加上数制标记,如如X X(十六进制)、(十六进制)、B B(二进制(二进制,默认)、默认)、OO(八(八进制)等。进
21、制)等。常用于表示总线的状态。常用于表示总线的状态。n n在程序包在程序包STANDARDSTANDARD中定义的源代码是:中定义的源代码是:n n TYPE BIT _VETOR IS ARRAY(NATURA TYPE BIT _VETOR IS ARRAY(NATURA RANGE)OF BITRANGE)OF BIT;n n“001100”001100”n nX“00BB”X“00BB”5、布尔(BOOLEAN)数据类型 n n BooleanBoolean(布尔量),(布尔量),又称逻辑量。又称逻辑量。有有“真真”、“假假”两种状态两种状态,分别用分别用TRUETRUE和和FALSE
22、FALSE标记。标记。用于关系运算和逻辑判断,常用来表示信号的状用于关系运算和逻辑判断,常用来表示信号的状态或者总线上的情况,态或者总线上的情况,程序包程序包STANDARDSTANDARD中定中定义布尔数据类型的源代码如下:义布尔数据类型的源代码如下:n n TYPE BOOLEAN IS(FALSETYPE BOOLEAN IS(FALSE,TRUE)TRUE);n n一般这一类型的数据的初始值总为一般这一类型的数据的初始值总为FALSEFALSE6、字符(CHARACTER)数据类型 n n字符类型通常用单引号括起来的一个字母、数字或$、%等字符。如A。字符类型区分大小写,如B不同于b。
23、字符类型已在STANDARD程序包中作了定义。n nCHARACTER(1)n n指出1的字符数据7、字符串(STRING)数据类型 n n字符串数据类型是字符数据类型的一个非约束型数组,或称为字符串数组。字符串必须用双引号标明。区分大小写字母。常用于程序的提示和说明等。n n如:VARIABLE STRING_VARSTRING(1 TO 7);n n n n STRING_VAR“A B C D”;8、时间(TIME)数据类型 n n VHDLVHDL中中惟惟一一的的预预定定义义物物理理类类型型是是时时间间。完完整整的的时时间间类类型型包包括括整整数数和和物物理理量量单单位位两两部部分分,
24、整整数数和和单单位位之之间间至至少少留留一一个个空空格格,如如55 55 msms,20 20 nsns。常常用用单单位位有有fsfs(飞飞秒秒)、nsns(纳纳秒秒)、ss(微微秒秒)、msms(毫毫秒秒)、s s(秒秒)、minmin(分分)等等。常常 用用 于于 指指 定定 器器 件件 延延 时时 和和 标标 记记 仿仿 真真 时时 刻刻。STANDARD STANDARD 程序包中也定义了时间。定义如下:程序包中也定义了时间。定义如下:n nTYPE TIME IS RANGE-2147483647 TO 2147483647TYPE TIME IS RANGE-2147483647
25、TO 2147483647n nunits units n nfsfs;-飞秒,飞秒,VHDLVHDL中的最小时间单位中的最小时间单位n npsps=1000 =1000 fsfs;-皮秒皮秒n nns=1000 ns=1000 psps;-纳秒纳秒n nus=1000 nsus=1000 ns;-微秒微秒 n nms=1000 usms=1000 us;-毫秒毫秒n nsec=1000 mssec=1000 ms;-秒秒n nmin=60 secmin=60 sec;-分分n nhr=60 minhr=60 min;-时时n nend end untisuntis;9、错误等级(SEVERI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三章 VHDL语言的数据类型及运算操作符 第三 VHDL 语言 数据类型 运算 操作
限制150内