集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 976|回复: 0

VHDL: signal and variable

[复制链接]
fpga_feixiang 发表于 2018-6-27 11:42:04 | 显示全部楼层 |阅读模式
信号与变量的不同主要有三点:

使用范围不同:信号是在结构体中定义的,其使用范围是全局。而变量只能在进程或是子程序中被定义和使用。
更新的时刻不同:信号只有在进程的结果时刻才被更新,此时的顺序结构可以认为是一种串联关系,当上升沿来到时,组合逻辑得到最后的结果,再等待下一次上升沿的到来。而变量是只要变量被重新赋值了,则其值就立刻被更新。
综合性不同:信号是可以被综合的,而变量是不可以被综合的。变量只是用于仿真。
    初学VHDL,对于信号和变量这两个对象非常模糊,故整理下。

    VHDL提供了SIGNAL和VARIABLE这两种对象来处理非静态数据,同时提供了CONSTANT、GENERIC来处理静态数据。

    信号可以在PACKAGE、ENTITY和ARCHITECTURE中声明,而变量只能在一段顺序描述代码的内部声明。因此,信号是全局的,而变量通常是局部的。

    变量的值通常是无法直接传递到PROCESS外部的。如果需要进行变量值的传递,则必须把这个值赋给一个信号,然后由信号将变量值传递到PROCESS外部。另一方面,赋予变量的值使即刻生效的,在此后的代码中,此变量将使用新的变量值。这个一点和PROCESS中使用的信号不同,新的信号值通常只有在整个PROCESS运行完毕后才开始生效。

    VHDL中的信号代表的是逻辑电路中的“硬”连线,既可以用于电路单元的输入/输出端口,也可以用于电路内部各单元之间的连接。实体的所有端口都默认为信号。信号定义的格式如下:

    SIGNAL name:type [range] [:= initial_value];

    有关信号的最重要一点是,当信号用在顺序描述语句(如PROCESS内部)中时,它并不是立即更新的,信号值是在相应的进程、函数或过程完成后才进行更新的。当对信号进行赋初始值的操作是不可综合的,只能用来进行仿真。

    变量仅用于局部的电路描述。它只能在PROCESS,FUNCTION和PROCEDURE内部使用,而且对它的赋值是立刻生效的,所以新的值可以再下一行中立即使用。仅用于顺序描述代码中。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-5-2 06:44 , Processed in 0.055741 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表