Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Electrónica Digital
Practica Final
2) Diseñar un circuito que cuente de 0 a 7, dando el resultado en binario. Utilizando los conceptos de
autómatas finitos(en VHDL).
4) Del siguiente código VHDL: a) Diga si es una máquina de estado de Mealy o Moore. B) Genere el
diagrama de estados. C) Identifique lo siguiente: Tipo asociado a los estados, Lógica de los estados,
memoria de estado, lógica de salida.
1
ELSIF (sA = ‘0’ and sB=’1’ and sC = ‘1’) THEN
LIBRARY IEEE; tEstadoSiguiente <= LLENO;
USE IEEE.STD_LOGIC_1164.ALL; END IF;
WHEN LLENO =>
ENTITY MaquinaEstadosMoore IS ELSIF (sA = ‘0’ and sB=’0’ and sC = ‘1’) THEN
PORT ( sA, sB, sC: IN std_logic; --Señal de entrada. tEstadoSiguiente <= NORMAL;
CLK: IN std_logic; --Señal de reloj. ELSIF (sA = ‘0’ and sB=’1’ and sC = ‘1’) THEN
sResetH: IN std_logic; --Señal de inicialización tEstadoSiguiente <= LLENO;
sE, sS: OUT std_logic); --Salida ELSIF (sA = ‘1’ and sB=’1’ and sC = ‘1’) THEN
END MaquinaEstadosMoore; tEstadoSiguiente <= ALARMA;
END IF;
ARCHITECTURE MaquinaEstadosMooreArch OF WHEN ALARMA =>
MaquinaEstadosMoore IS IF (sA = ‘0’ and sB=’0’ and sC = ‘0’) THEN tEstadoSiguiente
--Declaración del tipo asociado a los estados. <= VACIO;
TYPE TipoEstados IS (VACIO, NORMAL, LLENO, ELSE tEstadoSiguiente <= ALARMA;
ALARMA); END IF;
--Señales auxiliares para la codificación del END CASE;
--estado actual y siguiente. END PROCESS LOGICA_ESTADO;
SIGNAL tEstadoActual, tEstadoSiguiente: TipoEstados;
BEGIN -- Proceso dedicado a la Memoria de Estado
MEM_ESTADO: PROCESS(CLK, sResetH, tEstadoSiguiente)
-- Proceso dedicado a la lógica de estado: BEGIN
LOGICA_ESTADO: PROCESS(tEstadoActual, sEntrada) --Inicialización con RESET_H
BEGIN IF (sResetH =’1’) THEN tEstadoActual <= VACIO;
CASE (tEstadoActual) IS ELSIF(rising_edge(CLK)) THEN tEstadoActual <=
WHEN VACIO => tEstadoSiguiente;
IF (sA = ‘0’ and sB=’0’ and sC = ‘0’) THEN tEstadoSiguiente END IF;
<= VACIO; END PROCESS MEM_ESTADO;
ELSIF (sA = ‘0’ and sB=’0’ and sC = ‘1’) THEN
tEstadoSiguiente <= NORMAL; --Zona concurrente dedicada a modelar la
ELSIF (sA = ‘0’ and sB=’1’ and sC = ‘1’) THEN --lógica de salida.
tEstadoSiguiente <= LLENO; sS <= ‘0’ WHEN (tEstadoActual = VACIO)
ELSIF (sA = ‘1’ and sB=’1’ and sC = ‘1’) THEN ELSE ‘1’;
tEstadoSiguiente <= ALARMA; sE <= ‘1’ WHEN (tEstadoActual = NORMAL or
END IF; tEstadoActual = VACIO)
WHEN NORMAL => ELSE ‘0’;
IF (sA = ‘0’ and sB=’0’ and sC = ‘0’) THEN tEstadoSiguiente
<= VACIO; -- sSalida = f(Estado) => Máquina de MOORE.
ELSIF (sA = ‘0’ and sB=’0’ and sC = ‘1’) THEN
tEstadoSiguiente <= NORMAL; END MaquinaEstadosMooreArch;
5) Un circuito secuencial tiene dos flip-flops, A, B; dos entradas, X, Y; dos salidas W, Z; (los
valores de salida están mostrados dentro de cada estado). El diagrama de estados aparece
en la figura a continuación. Implemente el circuito en código VHDL.