UNIVERSIDAD NACIONAL 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. Al Alfredo Gr Granados Ly 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: clock: reset: x: ); end seq_design;
in std_logic; in std_logic; in std_logic; out std_logic
-----------------------------------------------------
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
A. Granados
Diseño Digital
10
Laboratorio No4