进程中的信号与变量赋值
从硬件系统开看
变量:连线
信号:连线上的信号值
常量:恒定电平,如GND或VCC
例子1:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY DFF3 IS
PORT(CLK,D1:IN STD_LOGIC;
Q1:OUT STD_LOGIC);
END;
ARCHITECTURE bhv OF DFF3 IS
SIGNAL A,B:STD_LOGIC;
BEGIN
PROCESS(CLK) BEGIN
IF CLK’EVENT AND CLK =’1’ THEN
A<=D1;
B<=A;
Q1<=B;
END IF
END PROCESS;
END;
END bhv
注:三个赋值语句(A<=D1; B<=A;Q1<=B;)都必须在遇到END PROCCESS后的δ时刻内执行,A被更新的值是第一个时钟上升沿的D1,B被更新的值是第二个时钟上升沿的A,Q1被更新的值是第三个时钟上升沿的B 。
例子2:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY DFF3 IS
PORT(CLK,D1:IN STD_LOGIC;
Q1:OUT STD_LOGIC);
END;
ARCHITECTURE bhv OF DFF3 IS
BEGIN
PROCES(CLK)
VARIABLE A,B:STD_LOGIC;
BEGIN
IF CLK’EVENT AND CLK=’1’ THEN
A:=D1;
B:=A;
Q1<=B;
END IF;
END PROCESS;
END;
END bhv
注:A、B是变量,担当了D1数据的暂存单元,它们的赋值更新是立即发生的。