Попробую немного по-другому.
У вас есть два регистра. То, что хранится в первом, вы как-то обрабатываете и результат защёлкиваете во второй. Но на эту обработку надо больше чем один такт клока. Самое простое решение -- это использование clock enable. В первом регистре данные защёлкиваются по одному cе, во втором -- по другому. Вы формируете эти ce так, что второй ce задержан относительно первого на нужное число тактов. Формируете любым способом: сдвиговым регистром, счётчиком, FSM, главное обеспечить нужное расстояние между ce.
Код
process (clkout_pin)
begin
if (rising_edge (clkout_pin)) then
if (ce_a = '1') then
A <= X;
endif;
if (ce_b = '1') then
B <= A * A;
endif;
ce_i <= ce_a;
ce_b <= ce_i;
end if;
end process;
Поскольку один регистр полностью контролируется ce_a, а второй ce_b, то мультицикл описывается как время от ce_a до ce_b. ucf получается таким, как я написал в предыдущем посте.
Вы можете переписать ваш код так?
Код
34: begin
temp1 <= sum1 * r_sin;
temp2 <= sum2 * r_cos;
end
37: begin
temp <= temp2 - temp1;
end
40: begin
Если да, то тут вы формируете только cе для temp1, temp2 и temp3, а их самих выносите в отдельный always с примененим этих ce.