二,VHDL语言的数据对象
1.常数
是一个固定的值 目的:为了使设计实体中的常数更容易阅读和修改。常数一旦被赋值就不能被改变。
一般格式:
CONSTANT 常数名:数据类型:=表达式;
常量的使用范围取决于它被定义的位置:
1).程序包中定义的常量具有最大的全局化特性,可以用在调用此程序包的所有设计实体中;
2).设计实体中定义的常量,其有效范围为这个实体定义的所有的结构体;
3).设计实体中某一结构体中定义的常量只能用于此结构体;
4).重点:结构体中某一单元定义的常量,如一个进程中,这个常量只能用在这一进程中;
2.变量
是一个局部变量
只能在进程语句,函数语句和过程语句结构中使用,用作局部数据存储。
变量常用在实现某种算法的赋值语句中。
一般格式:
VARIABLE 变量名: 数据类型 约束条件:=表达式;
变量赋值语句的语法格式如下:
目标变量 :=表达式;
限定条件:
1).赋值语句右方的表达式必须是一个与目标变量有相同数据类型的数值。
2).变量不能用于硬件连线和存储元件。
3).变量的适用范围仅限于定义了变量的进程或子程序中。
4).若将变量用于进程之外,必须将该值赋给一个相同的类型的信号,即进程之间传递数据靠的是信号。重点.
3.信号(SIGNAL)
信号是描述硬件系统的基本数据对象,它类似于连接线。
它除了没有数据流动方向说明以外,其他性质与实体的端口(port)概念一致。
信号说明格式为:
SIGNAL 信号名 : 数据类型 约束条件 :=初始值;
重点:信号初始值的设置不是必须的,初始值仅在VHDL的行为仿真中有效.
信号的使用和定义范围是实体,结构体和程序包
重点:
在程序中的赋值要点:
1.信号值的代入采用“<="代入符,而且信号代入时可以附加延时。
2.变量赋值时用”:=“,不可附加延时。
3.信号的初始赋值符号任然是”:=".
举例:
X<= Y AFTER 10ns XY都是信号,Y的值经过10ns延时过后被代入X;
信号是一个全局量,它可以用来进行进程之间的通信。
在仿真过程中,信号到了规定的仿真时间才进行赋值,变量的赋值是立即生效的。
重点:
信号与变量的区别
1.声明的形式与位置不同:
信号在结构体中声明;变量在进程中声明
2.赋值符不同
<=
:=
3.赋值生效的时间不同
信号:进程结束时赋值
变量:立即生效
4.进程对于信号敏感,对变量不敏感
5.作用域不同
信号可以是多个进程的全局信号,变量旨在定义后的顺序域可见。