Documente Academic
Documente Profesional
Documente Cultură
que vende barras de chocolate por veinticinco centavos. Las entradas y salidas del
controlador se muestran en la figura. Las señales de entrada nickel_in, dime_in y
quarter_in indican que se ha depositado una moneda correspondiente (1 nickel = 5
centavos, 1 dime = 10 centavos y 1 quarter = 25 centavos). También son necesarias dos
entradas adicionales, clk (reloj) y rst (reset). El controlador responde con tres salidas:
candy_out para dispensar una barra de chocolate, nickel_out y dime_out, confirmados
cuando se debe dar vuelto. Solo se aceptan monedas de cinco centavos, diez centavos y
cuartos). El estado 0 es el estado inactivo. De él, si se deposita una moneda de cinco
centavos, la máquina pasa al estado 5; si es un centavo, para indicar 10; o si es un
cuarto, para indicar 25. Se repiten situaciones similares para todos los estados, hasta el
estado 20. Si se alcanza el estado 25, entonces un se dispensa la barra de caramelo, sin
cambios. Sin embargo, si se alcanza el estado 40, por ejemplo, se entrega una moneda
de cinco centavos, pasando, por lo tanto, el sistema al estado 35, desde el cual se
entrega un centavo y se dispensa una barra de chocolate. Los tres estados marcados con
círculos dobles son aquellos de los que se entrega una barra de caramelo y la máquina
vuelve al estado 0.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity vending_machine is
end vending_machine;
TYPE state IS (st0, st5, st10, st15, st20, st25, st30, st35, st40, st45);
begin
PROCESS(rst, clk)
BEGIN
IF(rst='1') THEN
present_state <=st0;
END IF;
END PROCESS;
BEGIN
CASE present_state IS
nickel_out <='0';
END IF;
nickel_out <='0';
END IF;
nickel_out <='0';
END IF;
nickel_out <='0';
END IF;
nickel_out <='0';
END IF;
nickel_out <='0';
nickel_out <='1';
nickel_out <='0';
nickel_out <='0';
END CASE;
END PROCESS;
END fsm;
Realizar el código VHDL que defina un circuito secuencial que busca el valor mínimo
presente en la entrada A y cuenta el número de veces que aparece dicho número en cada
período de reloj cuando este valor mínimo está presente. Tiene dos salidas, minVal y
minCount. Entonces, por ejemplo, si el la secuencia de entrada en A es 57, 85, 23, 34, 36,
23, 46, 23 luego las secuencias de valores en las salidas serán 57, 57, 23, 23, 23, 23, 23,
23 y 1,1,1,1,1,2,2,3.
end minValCount;
architecture a1 of minValCount is
begin
if rising_edge(clk) then
else
end if;
end if;
end if;
end process;
end a1;
Realizar el diagrama de estados y el código VHDL para contar el número de pulsos impar
que se han observado en la entrada dIn desde la última activación de reset.
entity oddPulseCounter is port(
end oddPulseCounter;
architecture a1 of oddPulseCounter is
begin
process(clk) begin
if rising_edge(clk) then
Realizar el código VHDL que defina un circuito que cuenta el número de veces que la
entrada X es mayor en valor a la entrada Y. Por ejemplo, con la secuencia de pares de
entrada (X, Y) = (7,5), (4,6), (8,6), (9,13), (15, 2) el valor final de la salida, nUpCrossings
debe ser 2.
end upCross;
architecture a1 of upCross is
begin
if rising_edge(clk) then
else
end if;
end if;
end if;
end if;
end process;
end a1;