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