1,
赋值方式的不同
变量
:=
表达式
;
信号
<=
表达式
;
2,
硬件实现的功能不同
信号代表电路单元,功能模块间的互联,代表实际的硬件连线
变量代表电路单元内部的操作,代表暂存的临时数据
3,
有效范围不同
信号(全局量):程序包,实体,结构体
变量(局部量):进程,子程序
注:在进程和子程序中,信号只能被使用,不能被定义说明
4,
赋值行为的不同
信号赋值延时更新数值,一般生成时序电路
变量赋值立即更新数值,一般生成组合电路
5,
信号的多次赋值
a,
一个进程中:仅最后一次赋值有效
b,
多个进程中:称为多源驱动(如总线结构)
能综合成硬件电路的多源驱动有三种:线与,线或,三态
例子
ARCHITECTURE rtl OF sig IS
SIGNAL a,b : STD_LOGIC; --
定义信号
BEGIN
PROCESS(a,b)
BEGIN
a <= b;
b <= a;
END PROCESS;
END rtl ;
由于信号赋值的延时性(赋新值发生在进程结束时),所以结果是
a,b
的值互换
ARCHITECTURE rtl OF var IS
BEGIN
PROCESS
VARIABLE a,b : STD_LOGIC;--
定义变量
BEGIN
a := b;
b := a;
END PROCESS;
END rtl ;
由于变量赋值的立即更新,所以结果是
a
和
b
的值均为
b
转载于:https://www.cnblogs.com/liuxing1893/archive/2009/05/20/1468421.html