Laboratorio de Electrónica Digital

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