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.