Professional Documents
Culture Documents
Primeramente declaran todas las variables a ocupar asi como las señales necesarias, el primero
proceso corresponde a la asignación de cada selectora del multiplexor en base a el conteo y los
pulsos del reloj, posteriormente se realiza el proceso de conteo asendente o desendente y su
posible selección en base a la variable c.
Los siguientes procesos realizados son los correspondientes al reset del conteo y al paro mas reset,
el ultimo proceso es el encargado de multplexear las señales de salida primeramente se selecciona
el canal y después se va andando cada señal de salida al display en base a la selectora
seleccionada.
library IEEE;
--use IEEE.NUMERIC_STD.ALL;
--library UNISIM;
--use UNISIM.VComponents.all;
entity contador_nexys2 is
end contador_nexys2;
begin
begin
if CLK_50Mhz='1' and CLK_50Mhz'event then ---condiciones para que se active el display que
corresponda
else
end if;
temp <="00000000000000000000";
end if;
end if;
end process;
begin
else
bcd1 <= "0000"; --si el primer bcd es > a 9 entonces se actualiza su valor a 0
bcd2 <= bcd2 + 1; --el bcd posterior incrementa su valor ya que se recorre el
conteo
if bcd2 < "1001" then --condicion para restaurar el bcd 2 ya cuando llegue a 9
else
if bcd3 < "1001" then ----condicion para restaurar el bcd 3 ya cuando llegue a 9
else
if bcd4 < "1001" then ----condicion para restaurar el bcd 4 ya cuando llegue a 9
else
end if;
end if;
end if;
end if;
end if;
end if;
--CONT DES
else
else
else
else
end if;
end if;
end if;
end if;
end if;
end if;
--RESET
end if;
--PARO + RESET
end if;
end if;
end if;
end process;
begin
case sel is --se usa un selector de casos, en base a el valor de cada selectora
when "00" => bcd <= bcd1; an<= "1110"; --se selecciona el primer bcd, la variable an
toma valores correspondientes a la salida de un multplexor con salidas negadas
when "01" => bcd <= bcd2; an<= "1101"; -- se selecciona el segundo bcd, pasando el
valor de bcd 2 a bcd
when "10" => bcd <= bcd3; an<= "1011"; -- se selecciona el tercer bcd, pasando el valor de
bcd 3 a bcd
when "11" => bcd <= bcd4; an<= "0111"; -- se selecciona el cuarto bcd, pasando el
valor de bcd 4 a bcd
when others => bcd <= "0000"; --se le da el valor 0000 para otros
casos osea cuando termine el conteo
end case;
end process;
with bcd select --despliege de resultados en base a la selectora, tipo switch case
display <= "11111001" when "0001", --asignacion del vector de salida para el numero 1
end Behavioral;
UCF
NET "c" LOC="R17"; --asignacion del interruptor r17 para seleccionar el conteo asendente o
desendente
NET "r" LOC="H13"; --asignacion del interruptor h13 para hacer el reset
NET "p" LOC="E18"; --asignacion del interruptor e18 para hacer el paro
NET an<3> LOC="F15"; -- seleccion de cada display de salida por la variable an
NET Display<7> LOC="C17"; --asignacion de la señal de salida para cada led de los
display