VHDL变量与信号的差异

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 ;
由于变量赋值的立即更新,所以结果是ab的值均为b
posted @ 2012-12-17 13:33  乐富道  Views(491)  Comments(0Edit  收藏  举报