mcc_stb_inner <= (others => '0');
elsif rising_edge(CLK_I) then
- mcc_ack_inner (0) <= mcc_exec;
-
- for i in 0 to MCC_W-1 loop
- if mcc_mask (i) = '1' then
- mcc_ack_inner (i+1) <= MCC_ACK_I (i);
- mcc_stb_inner (i) <= mcc_ack_inner (i);
- else
- mcc_ack_inner (i+1) <= mcc_ack_inner (i);
- mcc_stb_inner (i) <= '0';
- end if;
- end loop;
+ if mcc_exec = '0' then
+ mcc_ack_inner <= (others => '0');
+ mcc_stb_inner <= (others => '0');
+
+ else
+ mcc_ack_inner (0) <= mcc_exec;
+
+ for i in 0 to MCC_W-1 loop
+ if mcc_mask (i) = '1' then
+ mcc_ack_inner (i+1) <= MCC_ACK_I (i);
+ mcc_stb_inner (i) <= mcc_ack_inner (i);
+ else
+ mcc_ack_inner (i+1) <= mcc_ack_inner (i);
+ mcc_stb_inner (i) <= '0';
+ end if;
+ end loop;
+ end if;
end if;
end process;