¿El uso de la compuerta AND con la señal de reloj causará problemas de tiempo?

1

Estoy creando una CPU casera con chips TTL de la serie 74.

Tengo una señal de reloj que va a varios registros. Tengo un registro particular que solo quiero actualizar cuando el código de operación es un valor particular. Así que la solución parece ser una puerta AND entre la señal del reloj y la salida de la lógica utilizada para decidir si el registro debería actualizarse. Esta parece ser la única solución viable, ya que el chip TTL no tiene una línea de habilitación separada para controlar si se usa el reloj o no.

Mi preocupación es el tiempo. ¿El retraso adicional de la puerta AND causará problemas porque retrasa la señal del reloj a este registro en comparación con otros registros? ¿O debería colocar una doble puerta NO en la línea del reloj que no va a la puerta Y para que ambas rutas tengan el mismo tiempo?

    
pregunta Phil Wright

2 respuestas

2

Es una técnica perfectamente válida, pero a menos que esté seguro de que las señales están libres de fallas, debe hacer un poco más para evitar que las fallas se traten como relojes espurios.

Esta página describe el cronometraje del reloj con pestillos, de los cuales he levantado estos diagramas:

Lospestillosdebenserdeltipo"transparente".

En general, cualquier señal que sea una "habilitación" se puede convertir en una habilitación de reloj si tiene en cuenta los efectos en el sesgo de tiempo.

(Pasé aproximadamente una década en un inicio creado alrededor de un software para administrar automáticamente las puertas del reloj y la sincronización en el diseño VLSI)

    
respondido por el pjc50
1

La implementación de esta forma asíncrona en esta etapa podría estar bien, pero a medida que su dispositivo crezca, comenzará a tener errores y retrasos en varias partes del circuito que pueden no ser compatibles y solucionables de forma fácil y adecuada.

Le propongo que cambie la metodología de su diseño y use circuitos síncronos.

Engancha los datos del código de operación en algún registro y usas el decodificador de código de operación conectado a este registro. La decodificación lleva tiempo; pero puede estar más o menos seguro de que la decodificación no tomará más que nanosegundos predefinidos (puede verla en las hojas de datos del decodificador + registro para su configuración ambiental). Luego, cuando esté seguro de que el decodificador terminó de decodificar, utiliza el siguiente impulso de reloj para bloquear el estado del decodificador: verdadero o falso, dependiendo de si el código de operación coincide o no. Suponga que su reloj es de 10 MHz, lo que le da 100 ns para completar todas las tareas: el primer pulso encajará el código de operación en el registro (lleva tiempo), luego la decodificación (toma tiempo) y solo entonces tendrá una buena salida del estado. Si todas estas operaciones se completan dentro, digamos, 60 ns, puede pensar que está seguro y al 100% seguro de que obtiene una señal digital adecuada y estable como salida.

Sin embargo, lo explicado anteriormente puede agregar un nivel de complejidad a su circuito (más chips de registro), todo depende de cuán compleja sea la implementación completa y si está listo para dedicar tiempo a la solución de problemas y la depuración de problemas de tiempo.

¿Por qué no usar CPLD o FPGA?

    
respondido por el Anonymous

Lea otras preguntas en las etiquetas