进程语句(process)
目录
进程表示一个处理过程,在一个结构体中可以包含多个进程。进程与进程之间是并行的,进程内部包含一组顺序描述语句,进程内部的语句是按先后次序顺序执行的。
[process_label:] process[(敏感信号列表)]
begin
顺序描述语句;
end process [process_label];
--process_label是一个可选项,用于对进程命名,通常省去。
例:
entity DFF is
port(
CLK : in BIT;
RST : in STD_LOGIC;
D : in STD_LOGIC;
Q : out STD_LOGIC);
end DFF;
architecture Behavioral of DFF is
begin
Reg1: process(CLK, RST)
begin
if (RST = '1') then
Q <= '0';
elsif (rising_edge(CLK)) then
Q <= D;
end if;
end process Reg1;
end Behavioral;
- 敏感信号列表中列出将会出发进程执行的所有信号,这些信号可以包含实体的接口信号;
- 进程的敏感信号列表用括号括起来,如果进程有多个敏感信号,则信号之间用逗号隔开;
- 如果process描述的是时序电路,则敏感信号列表中必须包含时钟信号;如果描述的是组合逻辑电路,则敏感信号列表中应包含全部的敏感信号,否则会引起行为仿真结果和综合后结果不同的现象。
- process敏感信号列表中不能包含动态信号。
- 动态信号则指的是能够改变其值的信号,这些信号通常由变量、输出端口或者从输入中读取的信号等定义。在编译时,动态信号的初始值是未知的,因此不能将其加入到过程的敏感性列表中。