VHDL数据对象及各种数据
扫描二维码
随时随地手机看文章
——存放各种类型数据的容器,包括变量、常量和信号
1. 变量(VARIABLE)
规则:只能在进程(PROCESS)、函数(FUNCTION)和过程(PROCEDURE)中说明和使用的局域量
定义格式:
VARIABLE 变量名:数据类型{:=初始值}
例如:VARIABLE a:INTEGER
VARIABLE b:INTEGER:=2;
变量赋值语句(区别端口赋值语句格式):
目标变量名:=表达式
例如:VARIABLE x,y:REAL
VARIABLE a,b:BIT VECTOR(0 TO 7);
x:=100.0;
y:=1.5+x;
a:=“1010101”
a(3 TO 6):=(‘1’,‘1’,‘0’,‘1’);
a(0 TO 5):=b(2 TO 7);
a(7) : = ‘0’;
注意事项:
变量是一个局部量,不能将信息带出对它作出定义的当前设计单元。变量的赋值是一种理想化的数据传输,是立即发生,不存在任何延时的行为。
VHDL语言规则不支持变量附加延时语句
变量赋值过程中必须保持数据类型的一致
2. 信号(SIGNAL)
规则:信号是在结构体(ARCHITECTURE)、程序包(PACKAGE)和实体中说明的全局量。
定义格式:SIGNAL 信号名:数据类型:=初值;
例如:SIGNAL temp:STD LOGIC:=‘0’;
SIGNAL flaga,flagb:BIT
SIGNAL data:STD LOGIC VECTOR(15 DOWNTO 0);
信号赋值语句:
目标信号名<=表达式
例如:x<=9;
y<=x;
z<=x AFTER 5ns;
信号具有全局性特征。
信号的数据传入不是即时的,需要一定延时时间。
信号与变量的区别:
(1)使用场合不同;(变量:进程;信号:结构体)
(2)变量用“:=”号赋值,其值被立即使用(无时间延迟);而信号用“<=”赋值,其值可以附加延迟。
3. 常数(CONSTANT)
规则:可以出现在实体、结构体、程序包、块、进程和子程序。常数在程序前部定义,且一旦被赋值就不能再改变。
定义格式:
CONSTANT 常数名:数据类型:=初值;
例如:
CONSTANT fbus:BIT VECTOR:=“010111”;
CONSTANT Vcc:REAL:=5.0;
CONSTANT dely:TIME:=25ns;
常量具有全局性意义。
常量数据类型必须与表达式的数据类型一致。常量的数据类型可以是标量类型或复合类型,但不能是文件类型(file)或存取类型(Access)。
来源:ks991次