VHDL,process(进程) 中变量(variable)和信号(signal)的区别,仿真对比

信号变量的区别与使用

信号与变量的区别:
(1)、声明形式与赋值符号不同
变量声明使用variable,赋值符号位

:=

而信号声明用signal,赋值符号为

<=

(2)、有效域不同
信号的声明在结构体内部,进程、子程序及函数外部声明,而变量只能在进程,函数体,子程序内部进行声明。换句话说,信号的有效作用域为整个结构体,而变量只能在进程,函数体,子程序内部起作用,他们不能为多个进程所共用。
(3)、赋值操作及数据带入时刻不同
在进程中,信号赋值在进程结束时起作用(即整个进程执行到最后一条语句时进程接下来挂起时,数据才发生带入),而变量赋值是立即起作用的。如果在一个进程中多次为一个信号赋值时,只由最后一个值会起作用;而当为变量赋值时,变量值的改变是立即发生的。即变量将保持着当前值,直到被赋予新的值。顺序语句只存在于进程和子程序内部。
(4)、信号的赋值
进程外部信号的赋值;进程外部不能为同一信号多次赋值,即在进程的外部,我们不能够为同一信号多次赋值。

具体区别课参见另外很好的一篇博客

这里我们应用如下模块进行仿真:注意其中的两个进程的异同
环境:win10, 64位,Vivado v2017.4 (64-bit) 仿真时长500ns

sig_var.vhd 如下

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity sig_var is
    Port ( 
           x : in STD_LOGIC;
           y : in STD_LOGIC;
           z : in STD_LOGIC;
           res1 : out STD_LOGIC;
           res2 : out STD_LOGIC</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值