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:
- Primera transición de estado:
b0_1 = (!a2) & (!a1) & (!a0)
(Entonces, si todos los bits son cero, b0 es 1)
- 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).
- Tercer estado
b0_3 = a2 & a1 & (!a0)
.
- 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!