El libro está mal. El período mínimo de reloj es de 30 ns.
- Primer reloj a Q de FF: 10 ns
- Primera puerta AND de entrada a salida: 10 ns
- Segunda puerta AND de entrada a salida: 10 ns
- Tiempo de configuración a la tercera FF: 0 ns
Total: 30 ns
Este es el tiempo requerido desde que la salida del primer FF sube (mientras que los otros dos FF ya son altos) para asegurar que el tercer FF baja en el próximo borde del reloj.
EDIT: Hay una sorprendente cantidad de confusión sobre esto, así que aquí hay algunos diagramas que espero que queden claros.
El primero muestra el contador contando desde el estado de todo cero, con cada espacio horizontal que representa 5 ns. Los retrasos de FF y de puerta se muestran como exactamente 10 ns. Tenga en cuenta que la entrada J2K2 al tercer FF apenas lo hace a tiempo para los estados 01x y 11x.
__ __ __ |__ __ __ __ |__ __
clock __/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__
_____ : _____ _____ : _____ ___
Q0 ____/ \_____/ | \_____/ \_____/ | \_____/
_____ : _____ _____ : _____ _
J1K1 ______/ \_____/ | \_____/ \_____/ | \_____/
___________ ___________
Q1 __________/ : | \___________/ : | \_________
_: |___ _: |___
J2K2 ____________/ \_____/ \___________/ \_____/ \_______
| _______________________
Q2 ______________________/ | \_________
| |
10ns ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
La línea vertical punteada muestra el caso en el que Q2 no debe alternar, y la línea vertical continua muestra dónde está.
Un diseño conservador (en ausencia de cualquier mínimo especificaciones de retardo de propagación) supondría que las salidas de las FF y las puertas se vuelven inválidas tan pronto como cambie cualquier entrada. Aquí hay una vista ampliada que tiene esto en cuenta:
_____ _____ _____ |_____
clock _____/ \_____/ \_____/ \_____/ \_____
_______________ :_______________
Q0 _____/XXX/ \XXX\_______/XXX/ \XXX\_______
___________________ :___________________
J1K1 _____/XXXXXXX/ \XXXXXXX\___/XXXXXXX/ \XXXXXXX\___
___________________________
Q1 _________________/XXX/ : \XXX\_______
__________ : ___________________
J2K2 _________________/XXXXXXXXXX\_/XXXXXXXXX/ \XXXXXXX\__
|___________
Q2 _________________________________________/XXX/
|
10ns ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
Aquí, he reducido un poco la demora de J2K2 para ilustrar cómo apenas se vuelve válido a tiempo para los dos bordes clave del reloj. Para resumir, Q0 se convierte en válido 10 ns después del límite del reloj, J1K1 se convierte en válido 10 ns después de que Q0 se convierta en válido, y J2K2 se convierte en válido 10 ns después de que J1K1 se convierta en válido, justo a tiempo para el siguiente flanco de reloj.
También, como señaló Brian Drummond, estoy ignorando por completo la salida de transporte del circuito (la tercera puerta AND). La pregunta es solo acerca de la frecuencia máxima de reloj del contador mismo. Si esa salida debe ser válida, entonces el período de reloj tendrá que ser aún más largo.