Documente Academic
Documente Profesional
Documente Cultură
Se requiere el diagrama de estados y el código VHDL para una máquina expendedora 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';
nickel_out <='0';
END IF;
nickel_out <='0';
nickel_out <='1';
nickel_out <='0';
nickel_out <='0';
END PROCESS;
END fsm;
PROBLEMA
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.
end oddPulseCounter;
architecture a1 of oddPulseCounter is
begin
process(clk) begin
if rising_edge(clk) then
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;