Существует значительная разница между сигналами и переменными в VHDL.В то время как переменная немедленно принимает значение присваивания, сигнал в последовательном коде (например, процесс) используется для создания триггеров, которые по своей сути не сразу принимают значение своего присваивания.Вы должны использовать переменную для достижения желаемой функциональности здесь.
entity prob35 is
port (
iaI : in std_logic_vector (11 downto 0);
oaO : out std_logic_vector (2 downto 0)
);
end prob35;
architecture Behavioral of prob35 is
begin
process(iaI)
variable counter : unsigned(2 downto 0) := "000";
begin
counter := "000";
for i in 1 to 11 loop
if (iaI(i-1)='1' and iaI(i)='0') then
counter := counter + 1;
end if;
end loop;
oaO <= std_logic_vector(counter);
end process;
end Behavioral;