好吧,我在我的主要组件中有进程 a,在我的其他子组件中有进程 b(在主组件中实现)。进程 a 和 b 在它们的敏感度列表中都只有时钟:进程一个名为 ready 的控制启用信号,如果 1 进程 b 可以工作,0 进程 b 将什么也不做。问题在于进程 a ,当进程 a 将使能信号的值更改为 0 时,必须等待下一个时钟周期才能更改,因此进程 b 结束并运行额外的时钟周期。
a:process(clk)
begin
if(rising_edge(clk)) then
if(output/=old_output) then
enable<='0';
end if;
end if;
end process;
b:process(clk)
begin
if(rising_edge(clk)) then
if(enable='1') then
--do anything
end if;
end if;
end process;