Vous êtes sur la page 1sur 6

Aplicacin de VHDL para aun contador de de la programacion de sistemas digitaels

:


ibrary ieee;
use ieee.std_logic_1164.all;
entity doble_display is port (

clk, rst , up, down : in std_logic;
display1, display2 : out std_logic_vector (0 to 6));

end doble_display;


architecture algo of doble_display is
begin

process (clk,rst, up , down )
variable contador1, contador2: integer range 0 to 9;
variable decre1, decre2 : integer range 9 downto 0;

begin
if rst = '1' then
display1 <= "0000000";
display2 <= "0000000";
else
if clk 'event and clk = '1'then --condicion de reloj
if up = '1' and down = '0' then --Condicion para incremento de 00 a 99

contador1:= contador1 + 1; --Contador para display1
--display1 en incremento
if (contador1 = 0) then --numero 0
display1 <= "1111110";
elsif (contador1 = 1) then --Numero 1
display1 <= "0110000" ;
elsif (contador1 = 2) then --Numero 2
display1 <= "1101101";
elsif (contador1 = 3) then --Numero 3
display1 <= "1111001";
elsif (contador1 = 4) then --Numero 4
display1 <= "0110011";
elsif (contador1 = 5) then --Numero 5
display1 <= "1011011";
elsif (contador1 = 6) then --Numero 6
display1 <= "1011111";
elsif (contador1 = 7) then --Numero 7
display1 <= "1110001";
elsif (contador1 = 8) then --Numero 8
display1 <= "1111111";
elsif (contador1 = 9) then
display1 <= "1110011";
else
display1 <= "1111110";
contador1 := 0; --reinicio de display1
contador2 := contador2 + 1; --contador de dysplay2
--display2 en incremento
if contador2 = 1 then
display2 <= "1111110";
elsif (contador2 = 1) then --Numero 1
display2 <= "0110000" ;
elsif (contador2 = 2) then --Numero 2
display2 <= "1101101";
elsif (contador2 = 3) then --Numero 3
display2 <= "1111001";
elsif (contador2 = 4) then --Numero 4
display2 <= "0110011";
elsif (contador2 = 5) then --Numero 5
display2 <= "1011011";
elsif (contador2 = 6) then --Numero 6
display2 <= "1011111";
elsif (contador2 = 7) then --Numero 7
display2 <= "1110001";
elsif (contador2 = 8) then --Numero 8
display2 <= "1111111";
elsif (contador2 = 9) then --numero 9
display2 <= "1110011";
end if;
end if;
else
decre1 := decre1 - 1; --decremento de display1
decre2 := 9;

--Condicion para display1

if (decre1 = 0) then --numero 0
display1 <= "1111110";
elsif (decre1 = 1) then --Numero 1
display1 <= "0110000" ;
elsif (decre1 = 2) then --Numero 2
display1 <= "1101101";
elsif (decre1 = 3) then --Numero 3
display1 <= "1111001";
elsif (decre1 = 4) then --Numero 4
display1 <= "0110011";
elsif (decre1 = 5) then --Numero 5
display1 <= "1011011";
elsif (decre1 = 6) then --Numero 6
display1 <= "1011111";
elsif (decre1 = 7) then --Numero 7
display1 <= "1110001";
elsif (decre1 = 8) then --Numero 8
display1 <= "1111111";
elsif (decre1 = 9) then
display1 <= "1110011";
else
display1 <= "1110011";
decre1 := 9;
decre2 := decre2 - 1;

--Condicion para display2

if (decre2 = 0) then --numero 0
display2 <= "1111110";
elsif (decre2= 1) then --Numero 1
display2 <= "0110000" ;
elsif (decre2 = 2) then --Numero 2
display2 <= "1101101";
elsif (decre2 = 3) then --Numero 3
display2 <= "1111001";
elsif (decre2 = 4) then --Numero 4
display2 <= "0110011";
elsif (decre2 = 5) then --Numero 5
display2 <= "1011011";
elsif (decre2 = 6) then --Numero 6
display2 <= "1011111";
elsif (decre2 = 7) then --Numero 7
display2 <= "1110001";
elsif (decre2 = 8) then --Numero 8
display2 <= "1111111";
elsif (decre2 = 9) then --numero 9
display2 <= "1110011";
end if;
end if;
end if;
-- fin de condicion
end if; -- fin de condicion del clk
end if; -- fin de condicion del rst
end process;
end algo;

Vous aimerez peut-être aussi