Мужики, делаю элементарный 8-и битовый двоичный счетчик на ISE7.1 для XC9572-PC44 CPLD. Сигналы счетчика вывожу через IO выходы. По идее, частота каждого следущего бита досжна делиться на два. У меня же частота всех равна половине CLK (CLK/2) плюс некоторые биты "дергаются" словно шум по фазе. Не могу понять в чем дело. Вроде нет ни ошибок с компиляцией ни с загрузкой. С сигналом CLEAR и CLK Все нормально. Исходник взят из справочника на инете: -------------------------------------------------------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity counter is Port ( CLEAR: in std_logic; Q5: out std_logic_vector(7 downto 0); CLK : in std_logic); end counter;
architecture Behavioral of counter is
signal Q5_IN : std_logic_vector(7 downto 0); -- Defines internal signals begin Q5 <= Q5_IN; -- Set output process(CLEAR, CLK) begin if CLEAR='1' then -- Clear counter ? Q5_IN <= "00000000"; -- Yes. Clear counter elsif CLK='1' and CLK'event then -- Clock rising edge ? if Q5_IN=128 then -- Yes. Count = 4 ? Q5_IN <= "00000000"; -- Yes. Clear counter else -- No Q5_IN <= Q5_IN + '1'; -- Count-up end if; end if; end process; end Behavioral;
|