Спасибо всем за ответы. Проблема, наконец, решилась. Всё дело было в начальной инициализации. Поменял её на другой вариант и всё заработало. Вот такие чудеса. Вот что получилось, если кому интересно:
library IEEE; use IEEE.STD_LOGIC_1164.ALL;
entity counter is Port ( CLK : in std_logic; DOUT : inout std_logic_vector(7 downto 0)); end counter;
architecture Behavioral of counter is signal regA: std_logic_vector(8 downto 0); signal count : integer range 0 to 2; begin
process (CLK) begin if (CLK'event and CLK='1') then if count = 2 then--причём если указать "count=1", то ничего не заработает regA <= (regA(4) xor regA(0)) & regA(8 downto 1); -- DOUT(7 downto 0) <= not regA(7 downto 0); DOUT <= ( not regA(2) ) & DOUT(7 downto 1); else--теперь здесь инициализация. Хотя выглядит грубовато... count <= count + 1; regA(8 downto 0) <= (others => '1'); DOUT(7 downto 0) <= (others => '1'); end if; end if; end process;
end Behavioral;
Вот только интересно: почему же не работает при "count=1" ...
|