En su forma más simple, para cada máquina de estado tiene tres variables:
- Entradas: dirigidas a la máquina de estado. No está controlado directamente por el diseño FSM.
- Estado: información interna sobre el estado actual en que se encuentra la máquina.
- Salidas: expulsadas de la máquina de estado.
El diseño de la máquina de estado sobre cómo define el estado y las salidas en función de una serie de entradas a lo largo del tiempo. El estado está registrado, por lo que en cada ciclo, está intentando averiguar el estado next . La salida es combinatoria, por lo que debe averiguar la salida actual .
Tanto para Mealy como para Moore, el siguiente estado está determinado por alguna combinación de las entradas, el estado actual y la salida de corriente. Así que es un montón de cosas como:
if (current_state == 5)
next_state = 6;
else if (current_state == 4 && input[3] == 1)
next_state = 5;
etc...
La salida normalmente no es secuencial, sino combinatoria. Y lo que se usa para calcular esta salida define si se trata de Mealy o Moore.
El caso más general es el Mealy FSM que calcula la salida con alguna combinación (es decir, Y / O / NO, comparadores, etc.) de estado de entrada y (actual).
De nuevo, cosas como:
if (current_state == 5)
output = 1;
else if (current_state == 4)
if (input[3] == 1)
output = 2;
else
output = 3;
etc..
Pero si nos limitamos a calcular solo según el estado, se trata de un FSM de Moore.
En este caso, se vería como:
if (current_state == 5)
output = 1;
else if (current_state == 4)
output = 2;
else if (current_state == 2 || current_state == 3)
output = 3;
etc..
Eso es realmente. Nada más. Y para colmo, puedes convertir una forma a una forma equivalente de la otra.
Una pregunta que a menudo no se pregunta es "¿Por qué los separamos en dos clases y les damos nombres? ¿Por qué es tan importante?"
La respuesta es porque cuando intenta crear FSM en circuitos prácticos reales, encontrará que generalmente puede obtener un mejor rendimiento de una máquina Moore. (Por lo general, se pueden ejecutar en frecuencias más altas). Sin embargo, para muchas personas, la intuición les lleva a pensar acerca de los problemas de la máquina de estado más de cerca al modelo Mealy.
Al clasificarlos, podemos aprender a pensar en los problemas de las máquinas de estado en ambos modelos. Esto le permite elegir el modelo correcto para el problema que está tratando de resolver. Los detalles sobre por qué Moore se ejecuta más rápido y las concesiones entre cuándo elegir los dos diseños vienen con experiencia y conocimiento sobre diseño digital.