你检查下代码,信号量ENx是不是一直在变化?类似于你这样写代码:
process(clk,reset)
begin
if reset = '0' then
ENx <= '0';
elsif rising_edge(clk) then
ENx <= '1';
else
ENx <= '0';
end if;
end process;
对于上面的代码,编译器认为ENx信号在clk的上升沿和下降沿都在变化,是不允许的.你可以将else中的语句拿掉即可(会产生锁存器).如果不希望产生锁存器的话,需要在elsif中加其他清除代码,注意不能再else中加.
