VHDL: «X» на выходе вместо «1» - PullRequest
0 голосов
/ 16 марта 2020

Я написал простой код часов реального времени. Однако при моделировании он показывает X вместо выходных битов, а также сбой после значения «000001» в выходных секундах. Изображение формы волны .

Не могли бы вы сообщить, что не так с кодом?

Код VHDL

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_unsigned.ALL; -- Enables Adding    

entity rtc_timer is
generic( CLK_FREQ : integer := 10);
port
( 
    nRST        : in std_logic;
    clk         : in std_logic;
    Seconds     : inout std_logic_vector(5 downto 0);
    Minutes     : inout std_logic_vector(5 downto 0);
    Hours       : inout std_logic_vector(4 downto 0)
);
end rtc_timer;

architecture Behavioral of rtc_timer is
signal counter : integer;

begin
    process(nRST, clk) 
    begin
        if rising_edge(clk) then
            -- Negative Reset Signal
            if nRST = '0' then
                counter <= 0;
                Seconds <= (others => '0');
                Minutes <= (others => '0');
                Hours   <= (others => '0');
            elsif counter = CLK_FREQ - 1 then
                counter <= 0;

                if Seconds = 59 then
                    Seconds <= (others => '0');

                    if Minutes = 59 then
                        Minutes <= (others => '0');

                        if Hours = 23 then
                            Hours <= (others => '0');
                        else Hours <= Hours + 1;
                        end if;

                    else Minutes <= Minutes + 1;
                    end if;

                else Seconds <= Seconds + 1;
                end if;

            else counter <= counter + 1;
            end if;

        end if;         
    end process;

end Behavioral;
...