Máquinas de estados finitos

3

Quiero diseñar una máquina de estados finitos que sea similar a un contador de 3 bits. Hay 3 bits de estado (es decir, un número sin firmar de 3 bits) y el contador debe contar por 3. Más específicamente, la secuencia a la que debe someterse es 0, 3, 6, 1, 4, 7, 2, 5, 0, 3, 6, 1.

Primero quiero producir una tabla de verdad que muestre cuál debe ser el siguiente estado de la máquina en función del estado actual. Luego quiero producir un circuito combinacional utilizando compuertas y chanclas D que implementan esta máquina de estados.

¿Cómo hago esto?

    
pregunta Annie

2 respuestas

3

Si solo necesitaba hacer esto, use un microcontrolador.

Si el propósito es hacer que esta lógica discreta sea un ejercicio de aprendizaje, entonces puedo pensar en varias maneras:

  1. Usa un contador binario de 3 bits e incrementalo 3 veces cada cuenta.

  2. Use un contador binario de 3 bits e incremente el segundo bit (cuente en dos) una vez y el primer bit (cuente en uno) una vez por cuenta.

  3. Use una ROM de 8 celdas de modo que la dirección sea el valor del contador existente y el contenido sea el siguiente valor del contador.

    Como solo tiene 8 estados posibles, dicha ROM podría implementarse mediante un decodificador de 3-8 líneas y un codificador de 8-3 líneas y un flip-flop para mantener la salida. La asignación de entrada a salida se realiza seleccionando qué salidas de decodificador controlan qué entradas de codificador.

    También puedes hacer la ROM con una matriz de diodos. Hay muchas posibilidades.

respondido por el Olin Lathrop
3

Olin dio una respuesta práctica bastante buena, pero echemos un vistazo a lo que se necesita para hacer esto usando puertas (ha pasado un tiempo). Lo que quieres hacer es construir la función booleana para el siguiente estado de cada bit, dado el estado actual de los tres bits, solo tomemos algunos estados y un ejemplo:

000 -> 011 
011 -> 110 
110 -> 001

Voy a convertirlos en una suma de representaciones de productos. Así que veamos la posición del bit más a la derecha, usaré la notación bn para el siguiente estado y an para el estado actual:

  1. Primera transición de estado: b0_1 = (!a2) & (!a1) & (!a0) (Entonces, si todos los bits son cero, b0 es 1)
  2. El segundo estado b0 es cero, así que no escribiré una regla para él (ya que, de manera predeterminada, si no se establece un bit en 1, la suma será cero).
  3. Tercer estado b0_3 = a2 & a1 & (!a0) .
  4. Haz esto para todas tus 8 transiciones.

Ahora b0 = b0_1 | b0_3 | ...

Harás esto para b0, b1 y b2 y terminarás con toda la lógica que necesitas. El siguiente paso puede simpificarlo (por ejemplo, con mapas de Karnaugh o una computadora). Su estado actual es la salida de sus (tres) flip-flops, entrando en la lógica y luego regresando a la entrada del flip flop. ¡Entonces puedes construirlo!

    
respondido por el Guy Sirton

Lea otras preguntas en las etiquetas