bitGateLab Digital · Aprende Abrir el simulador

Aprende › Tema 11

Máquinas de estados Moore y Mealy: diseño completo

Lectura de 7 min · Equipo bitGateLab

Una máquina de estados finitos (FSM) es un circuito secuencial que "recuerda" en qué paso de un proceso va. Semáforos, cerraduras con clave, controladores de elevador y receptores de comunicación serie son máquinas de estados. Aquí vas a ver los dos modelos clásicos, Moore y Mealy, y vas a seguir un diseño completo desde la descripción en palabras hasta las ecuaciones de los flip-flops, con un detector de la secuencia 101.

Partes de una máquina de estados

Toda FSM síncrona tiene tres bloques:

La diferencia entre los dos modelos está en el último bloque:

Una máquina Mealy suele necesitar menos estados y responde en el mismo ciclo en que llega la entrada, pero su salida puede cambiar en cualquier momento si la entrada cambia. Una Moore responde un ciclo después, y su salida solo cambia justo después del flanco de reloj, lo que la hace más limpia.

El problema: detector de la secuencia 101

Una entrada serie X llega sincronizada con el reloj, un bit por ciclo. La salida Z debe valer 1 cada vez que los últimos tres bits recibidos sean 1, 0, 1. Se permite traslape: en la cadena 10101 hay dos detecciones, porque el último 1 de la primera secuencia es el primero de la siguiente.

El primer paso es decidir qué debe recordar la máquina. Cada estado representa "cuánto de la secuencia llevo":

Diagrama y tabla de estados (Moore)

Para cada estado y cada valor de X pregúntate: con este nuevo bit, ¿cuál es el sufijo más largo que coincide con el inicio de 101? Ese sufijo define el estado siguiente.

S0/0 S1/0 S2/0 S3/1 1 0 1 0 1 0 0 1
Detector Moore de 101 con traslape. Los números sobre las flechas son el valor de X; la salida está dentro de cada estado.
Estado actualX = 0X = 1Z
S0S0S10
S1S2S10
S2S0S30
S3S2S11

Fíjate en dos transiciones que se equivocan con frecuencia. En S1 llega otro 1: la cadena termina en 11, y el último 1 sigue sirviendo como inicio, así que la máquina se queda en S1. En S3 llega un 0: la cadena termina en 1010, cuyo sufijo 10 coincide con el inicio de 101, así que va a S2 y no a S0. Eso es lo que permite el traslape.

Asignación de estados y ecuaciones

Con 4 estados bastan 2 flip-flops D (Q1 Q0). La asignación más directa es la binaria: S0 = 00, S1 = 01, S2 = 10, S3 = 11. Con flip-flops D la tabla de excitación es trivial, porque D = Q+.

Q1Q0XQ1+ = D1Q0+ = D0
00000
00101
01010
01101
10000
10111
11010
11101

Simplificación:

  • D0 vale 1 exactamente en las filas con X = 1, así que D0 = X. Tiene sentido: en esta asignación Q0 = 1 significa "el último bit fue 1".
  • D1 = Σm(2, 5, 6) con las variables en el orden Q1 Q0 X. Los minitérminos 2 (010) y 6 (110) son adyacentes y forman Q0·X. El 5 (101) no tiene vecinos en 1 y queda solo: Q1·Q0·X. D1 = Q0·X + Q1·Q0·X.
  • La salida de Moore solo depende del estado: Z = Q1·Q0.

El circuito queda con 2 flip-flops D, una AND de 2 entradas para Z, y para D1 una AND de 2, una AND de 3 y una OR de 2 (más los inversores de Q0 y X).

Verificación con una secuencia de prueba

Entrada X = 1 0 1 0 1 1 0 1, partiendo de S0. Estado después de cada flanco:

Flanco12345678
X10101101
EstadoS1S2S3S2S3S1S2S3
Z00101001

Hay tres detecciones: en los bits 1 a 3, 3 a 5 (traslape) y 6 a 8. Comprueba el flanco 4 con las ecuaciones: estado S3 = 11 y X = 0, D1 = 1·1 + 1·0·0 = 1 y D0 = 0, estado siguiente 10 = S2. Coincide.

La versión Mealy

En Mealy la salida va en la transición, así que el estado S3 sobra: la detección ocurre "al llegar el 1 estando en S2". Con tres estados A (nada), B (último bit 1) y C (últimos bits 1, 0):

EstadoX = 0X = 1
AA / 0B / 0
BC / 0B / 0
CA / 0B / 1

Siguen haciendo falta 2 flip-flops, pero la salida Z = 1 aparece en el mismo ciclo en que llega el último 1, un ciclo antes que en la versión Moore.

Errores comunes

Pruébalo en el simulador

Una vez que tienes las ecuaciones, armar el detector toma pocos minutos y el cronograma te deja comprobar cada transición.

  1. Coloca dos flip-flops D con el mismo reloj; nombra sus salidas Q1 y Q0.
  2. Conecta la entrada X directamente a D0.
  3. Arma D1 = Q0·X + Q1·Q0·X con dos inversores, dos AND y una OR, y conéctalo a D1.
  4. Conecta una AND de Q1 y Q0 a un indicador para Z.
  5. Cambia X antes de cada flanco siguiendo la secuencia 1 0 1 0 1 1 0 1 y observa en el cronograma que Z se enciende después de los flancos 3, 5 y 8.

Ejercicios

  1. Con traslape, ¿cuántas veces detecta 101 la máquina en la cadena 1010101?
    Respuesta

    Tres veces: en los bits 1 a 3, 3 a 5 y 5 a 7.

  2. Rehaz la tabla Moore del detector de 101 sin traslape (después de una detección se empieza de cero).
    Respuesta

    Solo cambia la fila S3: con X = 0 va a S0 y con X = 1 va a S1. Las demás filas quedan igual.

  3. Con la asignación de la versión Mealy A = 00, B = 01, C = 10, obtén Z.
    Respuesta

    Z = 1 solo en el estado C con X = 1: Z = Q1·Q0·X. Si el código 11 nunca aparece se puede marcar como X y queda Z = Q1·X.

  4. ¿Cuántos flip-flops necesita como mínimo una máquina de 9 estados?
    Respuesta

    4, porque 23 = 8 no alcanza y 24 = 16 sí.

Para repasar los flip-flops que forman el registro de estado consulta latches y flip-flops.