Я знаю, что это довольно известная тема, но ни одно из обычных решений, похоже, не работает.
Вот строка, которая выдает ошибку:
ppl_stage_cnt <= ppl_stage_cnt + 1;
Вот ошибка, которую я получаю (от xst):
Line 89: found '0' definitions of operator "+", cannot determine exact overloaded matching definition for "+"
Вот дополнительная информация для понимания контекста:
signal ppl_stage_cnt : std_logic_vector(log2(ppl)-1 downto 0);
pplstage_cnt: process ( clk )
begin
if rising_edge( clk ) then
if rst = '1' or ei = '1' or li = '1' then
ppl_stage_cnt <= (others => '0');
else
ppl_stage_cnt <= ppl_stage_cnt + 1;
end if;
end if;
end process;
Другие вещи, которые я пробовал:
ppl_stage_cnt <= std_logic_vector(to_unsigned(ppl_stage_cnt, log2(ppl)) + 1);
ppl_stage_cnt <= std_logic_vector(unsigned(ppl_stage_cnt) + '1');