Está en la página 1de 4

ESCUELA:

Universidad Politécnica de la Zona


Metropolitana de Guadalajara

Héctor Sánchez Ascencio


Electrónica Digital

Arquitecturas
2.16 Mediante un estilo funcional, programe en VHDL el funcionamiento de una lámpara para
código Morse que encienda la luz al presionar un botón y la apague al soltarlo.

library ieee;
use ieee.std_logic_l 164.all;
entity lamp is
port (Cod:in std_logic;
Sal:out std_logic);
end lamp
architecture encender of lamp is
begin
lámpara:process(cod)
begin

if cod = 0 then
sal <=’0’;
else
sal<=’1’
end if;
end process lámpara;
end encender;

2.17 Con un estilo funcional, programe en VHDL el funcionamiento del motor de un ventilador en
que el motor gire en un sentido al presionar el botón 'a' y en dirección contraria al oprimir el botón
'b\.

library ieee;
use ieee.std_logic_l 164.all;
entity vent is
port (ent: in std_logic;
l,r:out std_logic);
end vent;
architecture both of vent is
begin
proces (ent) begin
if (ent=’0’) then
l<=’0’;
r<=’1’; else
l<=1;
r<=0;
end if;
end process ent;
end both;
2.18 Con un estilo por flujo de datos, programe en VHDL el funcionamiento de un panel en una
fábrica de empaquetamiento de arroz. Este panel muestra el contenido de 2 silos (a, b) que tiene la
fábrica para guardar el arroz; un sensor detecta cuán llenos están, cuando se encuentran al 100%
de su capacidad, envía un '1 lógico', y cuando tienen 25% o menos envía un '0 lógico'; si en uno de
estos silos disminuye el contenido a 25% o menos, se prende una luz (c), si los dos sobrepasan ese
límite se enciende otra luz (d) y suena una alarma (e).

library ieee;
use ieee.std_logic_l 164.all;
entity sensor is
port (a,b: in std_logic;
c,d,e: outstd_logic);
end sensor;
architecture panel of sensor
begin
c<=’1’ when (a and b =’0’);
d and e<=1 when (a and b=’1’);
end panel;

2.19 Mediante el estilo de programación por flujo de datos, programe en VHDL el funcionamiento
de un robot en una planta que espera a que se llene una tarima con cuatro cajas antes de llevarla a
la bodega de almacenamiento; para saber si la tarima está llena cuenta con cuatro sensores, cada
uno apunta a sendas cajas; si hay una caja marca un '1 lógico'; si falta, marca un '0 lógico'. Si falta
alguna caja el robot no se puede ir, cuando están las cuatro cajas el robot se lleva la tarima.

library ieee;
use ieee.std_logic_l 164.all;
entity box is
port(b1,b2,b3,b4 : in std_logic;
t : out std_logic);
end box;
architecture tarima of box is
begin
t<=1 if (b1,b2,b3,b4 =’1’);
else t<=0;
end tarima;
2.20 Con el estilo de programación por flujo de datos, programe en VHDL el funcionamiento de
una caja de seguridad cuya apertura requiere la presión simultánea de tres de cuatro botones ('a',
'b\ 'c' y 'd'). Los botones que se deben oprimir son: 'a', 'c' y 'd'.

library ieee;
use ieee.std_logic_l 164.all;
entity box is
port (button: instd_logic (3 down to 0);
opening:out std_logic);
end box;
architecture door of box is
begin
opening <=1when(box3=’1’ and box2 =’1’ and box1 =’1’);
else opening <=0;
end box;

2.21 Mediante el estilo de programación estructural, programe en VHDL el problema del


apagador de escalera. La función para este problema es c — a b + ab, donde a es el interruptor
inferior, b es el interruptor superior y c es el foco.

library ieee;
use ieee.std_logic_l 164.all;
entity apagador;
port (a,b : in bit_vector (1 down to 0);
z:out bit);
end apagador;
use work.compuerta.all;
architecture stairs of apagador is
signal x:bit_vector(1 to 0);
U0 : and2 port map (a,b , x(0));
U1 . and2 port map(a,b, x(1));
U3 : or3 port map(x(0), x(1), c);
End apagador;

2.22 Con un estilo estructural, programe en VHDL el funcionamiento de un motor que se enciende
con la siguiente ecuación: y = a b + c b + ac.