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.内部信号的特点
赋值需要同数据类型。
variable used in lambda
信号在进程外定义,但可在进程中/进程外使⽤。
在进程外的信号的赋值是并⾏执⾏的。
在进程内的信号是顺序处理,并⾏赋值的。
对进程内的信号的赋值,在下⼀次进程中才有效。(故同⼀进程内同⼀信号可被多次赋值,只有最后⼀次有效)#学习代码
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;
#如果有错,请在评论区指出
#如果能帮到您,还请给个赞,谢谢 ^ __ ^

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。