进程中的信号与变量赋值
从硬件系统开看
变量:连线
信号:连线上的信号值
常量:恒定电平,如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数据的暂存单元,它们的赋值更新是立即发生的。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步