You are on page 1of 3

EXAMEN PARCIAL 1 – MICROPROCESADORES

1IT142
2010

NOMBRE:____________________________________ CÉDULA:____________
1. Diseñar un medio de monitoreo de espacios disponibles en un estacionamiento
de 10 espacios y proveer una indicación de una condición de lleno, iluminando
una señal de exhibición y bajando una barra de compuerta en la entrada. El
sistema consiste:
a. Sensores opto electrónicos en la entrada y salida del estacionamiento,
b. Un contador ascendente/descendente.
c. Un circuito de interfaz que usa a la salida del contador para encender o
apagar la señal de LLENO cuando se requiera y bajar o levantar la barra
de compuerta en la entrada.

















library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity prob1 is
Port ( clk,sent,ssal,reset : in STD_LOGIC;
barrera,lleno : out STD_LOGIC;
count : buffer STD_LOGIC_VECTOR (3 downto 0));
end prob1;

architecture Behavioral of prob1 is
signal p1,p2:std_logic;

component entrar_salir
port (sent,ssal : in STD_LOGIC;
E,S : out STD_LOGIC);
end component;

component cuenta
port (E,S,clk,reset : in STD_LOGIC;
count:buffer std_logic_vector(3 downto
0):=(others=>'0');
Barrera,LLENO : out STD_LOGIC);
end component;
begin
mod1:entrar_salir
port map(sent=>sent,ssal=>ssal,e=>p1,s=>p2);

mod2:cuenta
port map
(e=>p1,s=>p2,clk=>clk,reset=>reset,count=>count,barrera=>barrera
,lleno=>lleno);

end Behavioral;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
--library UNISIM;
--use UNISIM.VComponents.all;

entity entrar_salir is
Port ( sent,ssal : in STD_LOGIC;
E,S : out STD_LOGIC);
end entrar_salir;

architecture Behavioral of entrar_salir is

begin
Process(sent,ssal)
begin
if(sent'event and sent='1') then
E<='1';
else
E<='0';
end if;
if(ssal'event and ssal='1') then
S<='1';
else
S<='0';
end if;
end process;

end Behavioral;
EXAMEN PARCIAL 1 – MICROPROCESADORES
1IT142
2010

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity cuenta is
Port ( E,S,clk,reset : in STD_LOGIC;
count:buffer
std_logic_vector(3 downto
0):=(others=>'0');
Barrera,LLENO : out STD_LOGIC);
end cuenta;

architecture Behavioral of cuenta is

begin
process(clk,reset,e,s)
begin
if reset = '1' then
count <= (others=>'0');
elsif(e'event and e='1') then
count <= count + 1;
elsif(s'event and s='1') then
count <= count - 1;
end if;
end process;
process(count)
begin
if(count <= "1001") then
barrera <= '0';
lleno <= '0';
else
barrera <= '1';
lleno <= '1';
end if;
end process;

end Behavioral;






2. Cuatro tanques grandes en una planta química
contienen líquidos diferentes sometidos a
calentamiento. Se usan sensores de nivel del líquido
para detectar si el nivel en el tanque A o B se eleva
sobre el nivel predeterminado. Sensores de
temperatura en los tanques C y D detectan cuando en
cualquiera de éstos la temperatura desciende de un
límite establecido. Suponga que las salidas A y B del
sensor de nivel del líquido son BAJAS cuando éste es
satisfactorio y ALTAS cuando el nivel es demasiado
alto. Asimismo, las salidas del sensor de temperatura
C y D son BAJAS cuando la temperatura es
satisfactoria y ALTAS cuando es demasiado baja.
Diseñe un circuito lógico que detecte si el nivel en el
tanque A o B es muy alto, al mismo tiempo que la
temperatura en cualquier tanque C o D es demasiado
baja.







library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity prob2 is
Port ( A,B,C,D : in STD_LOGIC;
Nivel,Temperatura : out STD_LOGIC);
end prob2;

architecture Behavioral of prob2 is

begin
Nivel <= A or B;
Temperatura <= C or D;

end Behavioral;


EXAMEN PARCIAL 1 – MICROPROCESADORES
1IT142
2010

3. Un código BCD es transmitido a un receptor remoto. Los bits son A
3
, A
2
, A
1
, A
0

con A
3
como el MSB. La circuitería del receptor incluye un circuito detector de
errores BCD, que examina el código recibido para ver si es un código BCD
legal (es decir, ≤ 1001). Diseñe el circuito para producir un nivel ALTO en
cualquier condición de error.














library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity prob3 is
Port ( dato : in STD_LOGIC_VECTOR (3
downto 0);
Error : out STD_LOGIC);
end prob3;

architecture Behavioral of prob3 is

begin
Process(dato)
begin
if (dato <= "1001") then
Error <= '0';
else
Error <= '1';
end if;
end process;

end Behavioral;