进程中的信号与变量赋值(VHDL)

                                       进程中的信号与变量赋值
从硬件系统开看
变量:连线
信号:连线上的信号值
常量:恒定电平,如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数据的暂存单元,它们的赋值更新是立即发生的。

 

原文地址:https://www.cnblogs.com/yuxi/p/634414.html