VHDL中的signal(信号)variable(变量)的定义与赋值
·
VHDL中的signal(信号)variable(变量)的定义与赋值
variable(变量)
1.变量只能在process(进程)和子程序中定义和使用
process (clk)
variable v1 : integer := 0; --在说明语句部分定义变量
begin --在begin之后被赋值
v1 := 2; --v1值由0变为2
end process;
2.变量定义格式
Variable 变量名称 :数据类型 := 初值;
Variable 变量名称 :数据类型;
Variable 变量名称 :数据类型 范围;
Variable v1 : integer := 1;
Variable v1 : integer;
Variable v1 : integer range 0 to 20;
3.对已定义变量赋值
变量名称 := 表达式; --与signal不同,其赋值都是用 :=。
4.变量特点
赋值需要同数据类型
变量的赋值是立即发生的
变量赋值语句属于顺序执行
变量仅在所定义的进程内部起作用,不能被多个进程共用。
Signal(信号)
外部信号
1.外部信号有in out inout buffer四种类型。在entity(实体)中定义。Buffer是可反馈的输出端口。
内部信号
1.内部信号可在结构体,包体,块语句中定义。
以结构体为例
architecture teststr of test is
signal s1 : integer := 0; --在说明语句部分定义信号s1
begin --在begin之后被赋值
s1 <= 2; --s1值由0变为2
end teststr;
2.内部信号定义格式
Signal 变量名称 :数据类型 := 初值;
Signal 变量名称 :数据类型;
Signal 变量名称 :数据类型 范围;
Signal s1 : integer := 1;
Signal s1 : integer;
Signal s1 : integer range 0 to 20;
3.对已定义变量赋值
s1 <= 2; --与变量不同,信号使用 <=
4.内部信号的特点
赋值需要同数据类型。
信号在进程外定义,但可在进程中/进程外使用。
在进程外的信号的赋值是并行执行的。
在进程内的信号是顺序处理,并行赋值的。
对进程内的信号的赋值,在下一次进程中才有效。(故同一进程内同一信号可被多次赋值,只有最后一次有效)
#学习代码
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity test is
port(
i1 : in std_logic;
o1 : out integer
);
end test;
architecture teststr of test is
signal s1 : integer := 0;
signal s2 : integer := 1;
begin
s1 <= 2; --信号过程外赋值
process(i1)
variable v1 : integer := 0; --定义变量
begin
v1 := 0; --变量赋值
s2 <= 3; --信号过程内赋值
end process;
end teststr;
#如果有错,请在评论区指出
#如果能帮到您,还请给个赞,谢谢 ^ __ ^
更多推荐
已为社区贡献1条内容
所有评论(0)