Creé un divisor de reloj con el siguiente código. Seguí los pasos en el libro del profesor chu.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity clock_divider is
Port ( reset : in STD_LOGIC;
clk : in STD_LOGIC;--Clock in
out_red : out STD_LOGIC);--Reduced freq clock out
end clock_divider;
architecture Behavioral of clock_divider is
constant DVSR : INTEGER := 5000000;--for 1 ms tick at 50mhz clk input
signal ms_reg, ms_next : unsigned (22 downto 0);
signal ms_tick : std_logic;--tick at every 1ms
begin
process (clk)
begin
if (clk'event and clk = '1') then
ms_reg <= ms_next;
end if;
end process;
ms_next <=
(others => '0') when (reset = '1' or ms_reg = DVSR) else
ms_reg + 1;
ms_tick <=
'1' when ms_reg = DVSR else '0';
out_red <= ms_tick;
end Behavioral;
out_red es mi reloj de frecuencia reducido. Banco de pruebas muestra clock_out colgando a 0. ¿Alguien puede averiguar dónde me equivoqué?