Я написал простой код часов реального времени. Однако при моделировании он показывает 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;