eda中的信号和变量的区别就是,信号是全局变量,对它的赋值不是立即发生的,而是有一定的延迟。
不太懂,但是大概是这样:VHDL中有三种数据类型:常量、变量和信号,前两个没啥特别,跟C和C++中的差不多,但是信号是VHDL特有的。
VHDL提供了SIGNAL和VARIABLE这两种对象来处理非静态数据,同时提供了CONSTANT、GENERIC来处理静态数据。信号可以在PACKAGE、ENTITY和ARCHITECTURE中声明,而变量只能在一段顺序描述代码的内部声明。
因此,信号是全局的,而变量通常是局部的。
变量的值通常是无法直接传递到PROCESS外部的。如果需要进行变量值的传递,则必须把这个值赋给一个信号,然后由信号将变量值传递到PROCESS外部。另一方面,赋予变量的值使即刻生效的,在此后的代码中,此变量将使用新的变量值。这个一点和PROCESS中使用的信号不同,新的信号值通常只有在整个PROCESS运行完毕后才开始生效。
VHDL中的信号代表的是逻辑电路中的“硬”连线,既可以用于电路单元的输入/输出端口,也可以用于电路内部各单元之间的连接。实体的所有端口都默认为信号。信号定义的格式如下: SIGNALname:type [range] [:= initial_value];有关信号的最重要一点是,当信号用在顺序描述语句(如PROCESS内部)中时,它并不是立即更新的,信号值是在相应的进程、函数或过程完成后才进行更新的。
当对信号进行赋初始值的*作是不可综合的,只能用来进行仿真。变量仅用于局部的电路描述。它只能在PROCESS,FUNCTION和PROCEDURE内部使用,而且对它的赋值是立刻生效的,所以新的值可以再下一行中立即使用。
仅用于顺序描述代码中。
端口跟信号:端口有方向,信号无方向之分,端口相当于元器件的引脚,信号就是元件内部的连线,除这个外端口可以看做信号信号跟变量:变量只能在进程中使用,相当于C中的局部变量,生成的电路是暂存单元;信号相当于C中的全局变量,在进程内外均可使用,生成的是连线或存储单元以上是我的理解,情况大致这样子,希望对你有用!