
Vamos a abordar el diseño de Máquinas de Estado Finito (FSM), específicamente los tipos Mealy y Moore. El objetivo es desglosar el problema en pasos sencillos.
Entendiendo las Máquinas de Estado
Primero, definamos los conceptos clave. Una máquina de estados es un modelo matemático de computación. Este modelo representa un sistema que puede estar en un número finito de estados. La máquina transita de un estado a otro en respuesta a entradas externas.
Las máquinas de estado se dividen principalmente en dos categorías: Mealy y Moore. La principal diferencia radica en cómo se determinan las salidas. En una máquina Mealy, la salida depende tanto del estado actual como de la entrada. En una máquina Moore, la salida depende únicamente del estado actual.
Must Read
Diseño de una Máquina de Estado Mealy
El proceso de diseño para una máquina Mealy implica varios pasos. Inicialmente, definimos el problema y los requisitos. Luego, creamos un diagrama de estados.
El diagrama de estados representa visualmente el comportamiento de la máquina. Cada círculo representa un estado. Las flechas representan las transiciones entre estados. Cada flecha está etiquetada con la entrada que causa la transición y la salida correspondiente.

Por ejemplo, consideremos un detector de secuencia "11". La máquina debe generar una salida "1" cuando detecte la secuencia "11" consecutiva y "0" en caso contrario. Necesitamos estados que representen "ningún 1 recibido", "un 1 recibido" y "dos 1s recibidos (detección)".
Luego, se construye la tabla de estados. Esta tabla tabula las transiciones y las salidas para cada estado y cada posible entrada. La tabla de estados se deriva directamente del diagrama de estados.
Finalmente, implementamos la máquina usando flip-flops y compuertas lógicas. Se asigna un código binario a cada estado. Se derivan las ecuaciones lógicas para las entradas de los flip-flops y las salidas, usando la tabla de estados.

Diseño de una Máquina de Estado Moore
El diseño de una máquina Moore es similar al de una máquina Mealy. La principal diferencia es que la salida depende solo del estado actual. Esto simplifica el diseño en algunos casos.
Para diseñar una máquina Moore, también comenzamos definiendo el problema. Después, creamos el diagrama de estados. En una máquina Moore, cada estado está etiquetado con la salida correspondiente a ese estado.

Siguiendo con el ejemplo del detector de secuencia "11", los estados "ningún 1 recibido" y "un 1 recibido" tendrían una salida de "0". El estado "dos 1s recibidos (detección)" tendría una salida de "1".
La tabla de estados de una máquina Moore es ligeramente diferente a la de una máquina Mealy. La tabla de estados de Moore muestra el estado siguiente y la salida correspondiente para cada estado actual y cada entrada. La salida está asociada al estado, no a la transición.
La implementación de la máquina Moore se realiza de manera similar a la máquina Mealy, usando flip-flops y compuertas lógicas, derivados de la tabla de estados.

Comparación y Selección
Las máquinas Mealy y Moore tienen sus propias ventajas y desventajas. Las máquinas Mealy tienden a tener menos estados que las máquinas Moore para la misma funcionalidad, lo que puede resultar en un circuito más pequeño. Sin embargo, las salidas de las máquinas Mealy pueden tener glitches (transiciones espurias) debido a los retrasos en las entradas.
Las máquinas Moore, por otro lado, tienen salidas sincronizadas con el reloj, lo que las hace más estables. Sin embargo, pueden requerir más estados para implementar la misma funcionalidad.
La elección entre una máquina Mealy y una máquina Moore depende de los requisitos específicos de la aplicación. Si la velocidad es crítica y los glitches en la salida no son un problema, una máquina Mealy puede ser la mejor opción. Si la estabilidad de la salida es primordial, una máquina Moore puede ser más adecuada.