Laboratorio de Electrónica Digital UNIVERSIDAD DE GUANAJUATO D. I. C. I. S. Laboratorio de Electrónica Digital Práctica de Laboratorio No. 9: Máquinas de estado en VHDL Gustavo Cerda Villafaña D.I.C.I.S. Laboratorio de Electrónica Digital D.I.C.I.S. Práctica de Laboratorio No. 9 MÁQUINAS DE ESTADO EN VHDL Objetivos: Entender el funcionamiento y las tablas de estado de máquinas de estados Implementar una máquina de estados mediante lógica programable. Componentes: Sin componentes Equipo: 1 Equipo de Computo con el paquete de software Active-HDL 9.1 Introducción. Las máquinas de estado son sistemas que generan una serie de acciones en función de la secuencia en las variables de entrada. Si la salida del sistema secuencial es función solamente del estado presente, el sistema se conoce como máquina Moore. Cuando la salida del sistema secuencial es función del estado presente y de la entrada, la red se conoce como máquina Mealy: Logica combinacional Estado Siguiente Estado Presente Entradas Logica combinacional Flip-flops Salidas Estado Siguiente Estado Presente Flip-flops Reloj Logica combinacional Reloj Salidas Máquina Moore Máquina Mealy 9.2 Desarrollo En esta práctica se implementará una máquina Moore utilizando lógica programable. Es un detector de secuencia que en cada secuencia 101 produce una salida Z=1 coincidente con el último 1. La máquina no se reinicia al ocurrir una salida ‘1’. Tabla de ejemplo de entradas y salidas x= 0 0 1 1 0 1 1 0 z= 0 0 0 0 0 1 0 0 tiempo 0 1 2 3 4 5 6 7 0 0 8 1 0 9 0 0 10 1 1 11 0 0 12 1 1 13 0 0 14 0 0 15 Diagrama del circuito Gustavo Cerda Villafaña Laboratorio de Electrónica Digital D.I.C.I.S. 1 0 S0 0 S1 0 1 0 0 1 1 S3 1 S2 0 0 Diagrama de estados del detector de secuencias Y su tabla de estados: Estado presente S0 S1 S2 S3 Siguiente estado x=0 x=1 S0 S1 S2 S1 S0 S3 S2 S1 Salida presente Estado presente 0 0 0 1 00 01 11 10 Finalmente, el código para esta máquina es: library IEEE; use IEEE.std_logic_1164.all; entity SeqDet1 is port( RST : in std_logic; CLK : in std_logic; XIN : in std_logic; FO : out std_logic ); end SeqDet1; architecture Universal of SeqDet1 is type TipoEstados is (S0,S1,S2,S3); signal e_p : TipoEstados; begin asign_estados: process(CLK,e_p) begin Gustavo Cerda Villafaña Siguiente estado x=0 x=1 00 01 11 01 00 10 11 01 Salida presente 0 0 0 1 Laboratorio de Electrónica Digital D.I.C.I.S. if (CLK'event AND CLK = '0') then case e_p is when S0 => if (XIN = '0') then e_p <= S0; FO <= '0'; else e_p <= S1; FO <= '0'; end if; when S1 => if (XIN = '0') then e_p <= S2; FO <= '0'; else e_p <= S1; FO <= '0'; end if; when S2 => if (XIN = '0') then e_p <= S0; FO <= '0'; else e_p <= S3; FO <= '1'; end if; when S3 => if (XIN = '0') then e_p <= S2; FO <= '0'; else e_p <= S1; FO <= '0'; end if; end case; end if; end process; end Universal; Compile este código y simule su funcionamiento en el paquete Active-DHL mediante la generación de señales. Muestre el circuito al profesor y reporte sus resultados. 9.3 Ejercicios 1. Obtenga el diagrama de estados, la tabla de estados y el código en VHDL para el mismo circuito pero implementándolo con una máquina Mealy. Gustavo Cerda Villafaña
© Copyright 2024