Está en la página 1de 10

DIVISOR

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;entity divisor is

port (

clk_in: in std_logic;

reset: in std_logic;

clk_out: out std_logic

);

end divisor;

architecture behavioral of divisor is

signal temporal: std_logic:='0';

signal counter: integer range 0 to 12499999:= 0;

begin

frecuency_divider: process(reset, clk_in)begin

if(reset = '1') then

temporal<='0';

counter <= 0;

elsif rising_edge(clk_in) then

if(counter = 12499999 ) then

temporal <= NOT(temporal);

counter <= 0;

else

counter<=counter+1;

end if;

end if;

end process;

clk_out<= temporal;

end behavioral;
En este código se muestra nuestro divisor de frecuencia, el cuál hace que cuando le llega
una señal de 10 mega Hertz a 2 Hertz la cual hace que cuando le llegan 12499999 de
señales de reloj cambia a 0 la señal si estaba en 1 o bien que cambie a 1 si estaba en 0.

EXHIBIDOR

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity exh is

port(

ex: in std_logic_vector(1 downto 0);

a,b,c,d,e,f,g: out std_logic);

end exh;

architecture data of exh is

begin

a<= (NOT ex(1)) AND ex(0);

b<= '0';

c<= ex(1) AND (NOT ex(0));

d<= (NOT ex(1)) AND ex(0);

e<= ex(0);

f<= ex(1) OR ex(0);

g<= NOT ex(1);

end data;

________________________________________________________________________________

Este es el código de nuestro exhibidor, que será la salida que nos mostrara en que piso
esta, el display, será un exhibidor de 7 segmentos, y la señal que recibe es de 2 bits, ya
que el elevador solo cuenta tres pisos, 01 para el piso uno, 10 para piso dos y 11 para el
piso tres.

MOTORES

library ieee;

use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity motores is port (

clk: in std_logic;

p: in std_logic;

reset: in std_logic;

push: in std_logic_vector (2 downto 0);

slide: in std_logic_vector (2 downto 0);

exh: out std_logic_vector (1 downto 0);

mot: out std_logic_vector (1 downto 0);

s: out std_logic

);

end motores;

architecture funcion of motores is

signal Qp, Qs: std_logic_vector (3 downto 0):="0000";

begin comb: process (Qp, push, slide,p)

begin

case Qp is

when "0000" => --ep1

if (push = "111") then

Qs <= "0000";

elsif (push = "110") then

Qs <= "0011";

elsif ( push = "101") then

Qs <= "0110";

elsif ( push = "011") then

Qs <= "0111";

else

Qs <="0000";

end if;

exh <= "00";

mot <= "00";


s <= '0';

when "0001" => --ep2

if (push = "111") then

Qs <= "0001";

elsif (push = "110") then

Qs <= "1000";

elsif ( push = "101") then

Qs <= "0100";

elsif ( push = "011") then

Qs <= "0111";

else

Qs <= "0001";

end if;

exh <= "00";

mot <= "00";

s <= '0';

when "0010" => --ep3

if (push = "111") then

Qs <= "0010";

elsif (push = "110") then

Qs <= "1000";

elsif ( push = "101") then

Qs <= "1001";

elsif ( push = "011") then

Qs <= "0101";

else

Qs <= "0010";

end if;

exh <= "00";

mot <= "00";

s <= '0';
when "0011" => --Mp1

if (slide = "000") then

Qs <= "0011";

elsif (slide = "001") then

Qs <= "1011";

elsif (slide = "010") then

Qs <= "0011";

elsif (slide = "100") then

Qs <= "0011";

else

Qs <= "0011";

end if;

exh <= "01";

mot <= "00";

s <= '0';

when "0100" => --Mp2

if (slide = "000") then

Qs <= "0100";

elsif (slide = "001") then

Qs <= "0100";

elsif (slide = "010") then

Qs <= "1011";

elsif (slide = "100") then

Qs <= "0100";

else

Qs <= "0100";

end if;

exh <= "10";

mot <= "00";

s <= '0';

when "0101" => --Mp3


if (slide = "000") then

Qs <= "0101";

elsif (slide = "001") then

Qs <= "0101";

elsif (slide = "010") then

Qs <= "0101";

elsif (slide = "100") then

Qs <= "1011";

else

Qs <= "0101";

end if;

exh <= "11";

mot <= "00";

s <= '0';

when "0110" => --Sp2

if (slide = "000") then

Qs <= "0110";

elsif (slide = "001") then

Qs <= "0110";

elsif (slide = "010") then

Qs <= "1010"; --corregir en la tabla

elsif (slide = "100") then

Qs <= "0110";

end if;

exh <= "10";

mot <= "10";

s <= '0';

when "0111" => --Sp3

if (slide = "000") then

Qs <= "0111";

elsif (slide = "001") then


Qs <= "0111";

elsif (slide = "010") then

Qs <= "0111";

elsif (slide = "100") then

Qs <= "1010";

else

Qs <= "0111";

end if;

exh <= "11";

mot <= "10";

s <= '0';

when "1000" => --bp1

if (slide = "000") then

Qs <= "1000";

elsif (slide = "001") then

Qs <= "1010";

elsif (slide = "010") then

Qs <= "1000";

elsif (slide = "100") then

Qs <= "1000";

else

Qs <= "1000";

end if;

exh <= "01";

mot <= "01";

s <= '0';

when "1001" => --bp2

if (slide = "000") then

Qs <= "1001";

elsif (slide = "001") then

Qs <= "1001";
elsif (slide = "010") then

Qs <= "1010";

elsif (slide = "100") then

Qs <= "1001";

else

Qs <= "1001";

end if;

exh <= "10";

mot <= "01";

s <= '0';

when "1010" => --am

if (slide = "000") then

Qs <= "1011";

elsif (slide = "001") then

Qs <= "1011";

elsif (slide = "010") then

Qs <= "1011";

elsif (slide = "100") then

Qs <= "1011";

else

Qs <= "1010";

end if;

exh <= "00";

mot <= "00";

s <= '0';

when "1011" => --ap

if (p = '0') then

Qs <= "1011";

elsif (p='1')then

Qs <= "1100";

else
Qs <= "1011";

end if;

exh <= "00";

mot <= "00";

s <= '1';

when "1100" => --cp

if (p = '1') then

Qs <= "1100";

elsif (p = '0') then

Qs <= "1101";

else

Qs <= "1100";

end if;

exh <= "00";

mot <= "00";

s <= '0';

when "1101" => --para salir

if (slide = "000" ) then

Qs <= "1101";

elsif (slide = "0001")then

Qs <= "0000";

elsif (slide = "010")then

Qs <= "0010";

elsif (slide ="100") then

Qs <= "0011";

end if;

exh <= "00";

mot <= "00";

s <= '0';

when others =>


Qs <= "0000";

end case;

end process comb;

sec: process (clk)

begin

if (reset = '1') then

Qp <= "0000";

elsif (clk'event and clk='1') then

Qp <= Qs;

end if;

end process sec;

end funcion;

________________________________________________________________________________________

El código de motores es el que hará el proceso de que haga el funcionamiento del


elevador y se mueva por medio de señales, dependiendo de en que estado esta y que
señal le llegue y dependiendo de donde le llegue tendrá una estado saliente especifico,
es decir B2B1B0 son nuestros push button (te dicen a qué piso vas ya sea al mismo en el
que te localizas o a un piso diferente) con señales de 4 bits y están mandaran salidas a
tres lugares a el exhibidor de 2 bits , a los leds de los motores de dos bits y a las de puertas
de un bit que esta manda la señal a la segunda máquina, y los S1S2S0 son los estado
salientes específicos de los slide button (indican que ya llego al piso que el push button
indico y que ya termino el proceso) da una señal de 4 bits y estas mandaran la señal a
exhibidor de dos bits , leds de motor de dos bits y a la salida de puestas que es de un bit

También podría gustarte