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

相关文章:

  • 2021-07-25
  • 2021-07-17
  • 2022-12-23
  • 2021-08-06
  • 2022-12-23
  • 2021-06-09
  • 2021-06-02
猜你喜欢
  • 2022-12-23
  • 2021-07-30
  • 2022-01-30
  • 2021-05-05
  • 2021-07-28
  • 2022-12-23
  • 2021-05-16
相关资源
相似解决方案