Sunteți pe pagina 1din 10

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

FACULTAD DE INGENIERÍA ELECTRÓNICA


ESCUELA DE INGENIERÍA ELECTRÓNICA

DISEÑO DIGITAL

LABORATORIO No4

ESTILO ALGORITMICO Y MAQUINAS DE


ESTADO

Profesor: Ing. Alfredo Granados Ly


UNMSM – FIE Diseño Digital

1. Tenga en consideración los pines del módulo cuando implemente el circuito digital

A. Granados 2 Laboratorio No4


UNMSM – FIE Diseño Digital

EJEMPLO DE MAQUINA DE ESTADO: CONTROL DE LLENADO DE UN DEPÓSITO DE


LÍQUIDOS.

Un tanque de agua abierto por la parte superior dispone de tres sensores de detección
de llenado (A, B, C) que determinan 4 posibles niveles de llenado (VACIO,
NORMAL,LLENO, ALARMA). El nivel del tanque se controla mediante dos válvulas (E,
entrada y S, salida).

Se pide diseñar un circuito de control que opere de la siguiente forma:

• En condiciones de llenado normal, las válvulas E y S se encuentran abiertas.


• Si el líquido llega al nivel de vacío, se cierra la válvula de salida y se mantiene
abierta la de entrada.
• Si el líquido llega al nivel de lleno, se cierra la válvula de entrada y se mantiene
abierta la de salida.
• Si por cualquier circunstancia, por ejemplo lluvia, se llegara al nivel de alarma, se
deberá cerrar la válvula de entrada y abrir la de salida. Esta situación se mantendrá
hasta que el tanque llegue al estado de vacío.

Datos adicionales:
El funcionamiento de los sensores digitales y las válvulas E y S se encuentra resumido en
las tablas adjuntas:

Desde el punto de vista de nuestro diseño, es posible considerarlo como una caja
negra que presentará el siguiente aspecto:

• Entradas: Tres entradas asociadas para cada uno de los sensores de detección de
nivel más una señal de reloj (CLK) y otra de inicialización (ResetH), asociadas a la
parte secuencial.
• Salidas: Dos (E y S), encargadas de controlar las válvulas de llenado y vaciado.

A. Granados 3 Laboratorio No4


UNMSM – FIE Diseño Digital

Implementación de la máquina de estados tipo MOORE:

En el diagrama implementado se puede reducir un estado ya que el estado ARRANQUE


realiza la misma operación que el estado VACIO.

A. Granados 4 Laboratorio No4


UNMSM – FIE Diseño Digital

Tarea: Implementar el circuito utilizando la máquina de MEALY.

A. Granados 5 Laboratorio No4


UNMSM – FIE Diseño Digital

Problema propuesto:

Se requiere un controlador digital para un semáforo en la intersección de una calle de


tráfico muy denso con una calle de tráfico moderado. La calle principal va a tener luz
verde durante un mínimo de 25 s o mientras no haya ningún vehículo en la calle
perpendicular. Esta calle lateral tiene que tener luz verde hasta que no circule ningún
coche por ella o durante un máximo de 25 s. La luz ámbar de precaución tiene que durar
4 s en los cambios de luz verde a roja en ambas calles, principal y lateral. Los
requerimientos se muestran a continuación

Implementar el circuito en VHDL, tome en consideración para la simulación un reloj de


1Hz. En el momento de la implementación en el FPGA tome en cuenta que la señal de
reloj es de 50MHz.

Problema proupesto:

Analice la siguiente implementación VHDL y dibuje como sería el diagrama de estado:

library ieee ;
use ieee.std_logic_1164.all;

-----------------------------------------------------

entity seq_design is
port( a: in std_logic;
clock: in std_logic;
reset: in std_logic;
x: out std_logic
);
end seq_design;

-----------------------------------------------------

A. Granados 6 Laboratorio No4


UNMSM – FIE Diseño Digital

architecture FSM of seq_design is

-- define the states of FSM model

type state_type is (S0, S1, S2, S3);


signal next_state, current_state: state_type;

begin

-- cocurrent process#1: state registers


state_reg: process(clock, reset)
begin

if (reset='1') then
current_state <= S0;
elsif (clock'event and clock='1') then
current_state <= next_state;
end if;

end process;

-- cocurrent process#2: combinational logic


comb_logic: process(current_state, a)
begin

-- use case statement to show the


-- state transistion

case current_state is

when S0 => x <= '0';


if a='0' then
next_state <= S0;
elsif a ='1' then
next_state <= S1;
end if;

when S1 => x <= '0';


if a='0' then
next_state <= S1;
elsif a='1' then
next_state <= S2;
end if;

when S2 => x <= '0';


if a='0' then
next_state <= S2;
elsif a='1' then
next_state <= S3;
end if;

when S3 => x <= '1';


if a='0' then
next_state <= S3;
elsif a='1' then
next_state <= S0;

A. Granados 7 Laboratorio No4


UNMSM – FIE Diseño Digital

end if;

when others =>


x <= '0';
next_state <= S0;

end case;

end process;

end FSM;

EJEMPLO DE MAQUINA DE ESTADO: DETECTOR DE SECUENCIA

Se pide diseñar un circuito que acepte una entrada de datos serie y presente una salida
que se activará (tomará el valor lógico ‘1’) cuando en los instantes de muestreo
aparezca la secuencia “1011”.

Descripción de la interfaz:
• Entradas: Una entrada de datos (sDataIn) más una señal de reloj (CLK) y otra de
inicialización (ResetH), asociadas a la parte secuencial.
• Salidas: Una sDetect, encargada de activarse cuando se ha detectado la
secuencia.

Diagrama de estados tipo MOORE:

A. Granados 8 Laboratorio No4


UNMSM – FIE Diseño Digital

PROBLEMA:
• Implemente un detector para la siguiente secuencia: 11X011 (Moore) y considere
la ocurrencia de traslape.
• Implemente el siguiente contador: 0,4,7,1,5,9, 0,4,7,1,5,9, 0,4,7,1,5,9,…..
adicionalmente debe tener un control de cuenta UP (1: ASC/0:DESC)

A. Granados 9 Laboratorio No4


UNMSM – FIE Diseño Digital

A. Granados 10 Laboratorio No4