Quiero un contador que el bit más significativo alterna cada 2 segundos, y obtiene los valores 0 y 1. Así, por ejemplo, tendrá 0 por 2 segundos y luego 1 por otros 2 segundos, etc. Lo necesito así porque voy a conectar el bit más significativo a un decodificador que mostrará resultados en FPGA 3starter (50MHZ / 20ns) ¿Funcionará esto?
library ieee ;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
----------------------------------------------------
entity counter is
generic(27: natural :=2);
port( clock: in std_logic;
rst: in std_logic;
count: in std_logic;
Q: out std_logic_vector(27-1 downto 0)
);
end counter;
----------------------------------------------------
architecture behv of counter is
signal Pre_Q: std_logic_vector(27-1 downto 0);
begin
-- behavior describe the counter
process(clock, count, clear)
begin
if clear = '1' then
Pre_Q <= Pre_Q - Pre_Q;
elsif (clock='1' and clock'event) then
if count = '1' then
Pre_Q <= Pre_Q + 1;
end if;
end if;
end process;
-- concurrent assignment statement
Q <= Pre_Q(27-1);
end behv;