La idea básica en este tipo de problemas es que sus flip-flops D representan su estado y usted necesita crear una lógica combinacional que tome como entrada el estado actual y genere como salida el siguiente estado. .
Así que primero creas la tabla de verdad:
input output
D2 D1 D0 | D2' D1' D0'
0 0 0 | * * * # actually, don't care is not quite right, see below
0 0 1 | 1 0 0 # 1 -> 4
0 1 0 | 0 1 1 # 2 -> 3
0 1 1 | 0 0 1 # 3 -> 1
1 0 0 | 1 1 1 # 4 -> 7
1 0 1 | * * * # not quite right, see below
1 1 0 | * * * # not quite right, see below
1 1 1 | 0 1 0 # 7 -> 2
Entonces ahora tiene tres funciones ( D2'
, D1'
y D0'
) para las cuales tiene que crear lógica combinacional. Lo que puedes hacer con un mapa de Karnaugh o cualquier otra cosa que tengas a tu disposición. (Por ejemplo, puede obtener una copia del Minimizador de la lógica del espresso . El código fuente está en github . Hay varias versiones precompiladas disponibles si realiza una búsqueda en Google.
Initialization
En la tabla de verdad de arriba, dije que "no importa" no está del todo bien ". Aquí le explicamos por qué: cuando enciende la alimentación por primera vez en su circuito, los flip-flops D aparecerán en algún estado aleatorio. Por lo tanto, debe asegurarse de que su circuito de alguna manera se encuentre en un estado razonable. Una forma de hacerlo es asegurarse de que alguna otra parte de su circuito establezca las líneas de configuración / reinicio correctas en sus flip-flops poco después del inicio (y tenga en cuenta que 000 no es no un estado válido en este caso.) Otra forma de hacerlo es asegurarse de que los estados de "no importa" en realidad conducen a estados válidos (eventualmente). (Esto también hace que su circuito sea más robusto a los errores transitorios). Así que asegúrese de que el estado 000 no haga la transición al estado 000 (o más perversamente, que no tenga transiciones que alternen entre estados no válidos, como 000- > 101- > 000.) Si la minimización de su lógica utiliza la función No importa para crear ciclos, puede interrumpir estos ciclos reemplazando la opción No importa por estados válidos.
Algunos recursos para ayudarlo a explorar más a fondo:
- Lo siguiente surgió cuando busqué en Google "diseñando contadores". (Es de un libro de texto de Randy Katz que se utilizó ampliamente en las clases de diseño digital introductorio en la década de 1990. Esperemos que el enlace sea a una copia legal). La sección 7.2.2 en particular es lo que está buscando. enlace
Preguntas anteriores de electronics.stackexchange sobre temas similares: