Diseño de un contador síncrono con flip flops d

Tengo que diseñar un contador con dos entradas: xy y. Si y = 0, el contador se comporta como un contador de anillo de 3 bits y si y = 1, se comporta como un contador Johnson de 3 bits. Si x = 0, cuenta hacia adelante, y si x = 1, cuenta hacia atrás. Solo puedo usar chanclas D y cualquier puerta lógica que necesite.

Como referencia, aquí están las tablas de estado de un anillo de 3 bits y un contador Johnson (en ese orden):

Mesa de anillos

mesa johnson

Entonces, naturalmente, creé esta gran tabla de estados:

Tabla de estados

Dado que hay dos entradas y tres estados, cada estado siguiente depende de cinco bits. Por lo tanto, los K-maps para Q1+, Q2+y Q3+(que en realidad son D1, D2y D3para los flip flops) son mapas de cinco variables, lo que lo complica un poco.

La pregunta es: ¿hay alguna manera de hacer la minimización con k-maps de una manera más simple (tal vez me estoy perdiendo algo)? O, si no hay forma de simplificar la minimización, ¿es más inteligente usar k-maps de cinco variables o tal vez otro método (quizás quine-mccluskey, o algo completamente diferente)?

¿Qué quiere decir con "manera más simple" para la minimización? - ¿Está solicitando una forma minimizada de su tabla de verdad, o un método más simple para hacer realmente la minimización? - ¿Más simple que el método estándar, descrito por ejemplo en Wikipedia ?
@HannoBinder ¿Existe un método más simple para minimizar esta tabla de verdad que usar K-maps de 5 variables?
Pensándolo bien, creo que una tabla de verdad no es el enfoque correcto para la tarea porque, como ya notó, la salida deseada no es realmente una función lógica directa de la entrada en ningún momento.
El contador de anillo tiene tres estados válidos y el contador de Johnson tiene seis. ¿Qué se supone que sucederá con el estado de conteo cuando Y cambie? Además, le sugiero que elabore tablas de verdad separadas para sus tres bits de estado. Eso hará que sea mucho más fácil resolver el circuito para cada bit por separado.

Respuestas (2)

Una simplificación del diseño es diseñar primero los contadores de anillo y de arriba/abajo de Johnson de forma independiente. Luego simplemente coloque un mux que seleccione Q*cualquiera de los dos dependiendo de y.

esquemático

simular este circuito : esquema creado con CircuitLab

Sin duda eso sería una simplificación, y gracias por la sugerencia. Sin embargo, no tengo libertad para experimentar, y estoy atascado en esta forma de hacer las cosas. Por eso necesito saber si solo se puede simplificar la minimización.

Usted declaró explícitamente que puede usar cualquier puerta lógica que necesite. Si ese es el caso, no necesita (y no debe) hacer ninguna minimización en absoluto.

Aquí hay dos opciones:

  1. Utilice la tabla de estados para leer una forma de suma de productos no mínima. (Cada fila es un producto de las cinco variables de entrada, y usted suma todos los productos que dan como resultado que la variable de salida sea verdadera).

  2. Entiendo que no puede usar la solución de @apalopohapa porque tiene 6 flip-flops en lugar de 3, pero puede hacer el equivalente combinacional: hacer las siguientes funciones de estado solo para el contador de anillo, hacer las funciones de siguiente estado solo para el contador de johnson , luego use muxes controlados por ypara generar los valores finales del siguiente estado. (Tanto los contadores de anillo como los contadores de johnson son populares precisamente porque la lógica del siguiente estado es muy pequeña, por cierto).

También hay programas de minimización de lógica disponibles (Google "minimizador de lógica de espresso"), pero realmente no necesita uno en este caso.