¿Habilitar salida para 1 ciclo de reloj?

2

Dada la entrada X y la salida Y y un reloj - X es un botón / interruptor e Y es igual a 1 solo una vez por ciclo de reloj y presión de botón.

El botón es asíncrono y Y solo debería cambiar a 1 al subir el reloj.

Intenté hacer un diagrama de tiempo, no estoy seguro de si ayuda.

Intenté usar D-flip flops pero no he llegado a ninguna solución.

    
pregunta user1768788

3 respuestas

5

Si se garantiza que los impulsos de entrada tienen tiempos altos y bajos que duran por lo menos un ciclo de reloj, pero que pueden llegar arbitrariamente cerca de un borde del reloj, pase la entrada a través de tres biestables consecutivos, y Y juntos el no invertido Salida del segundo con la salida invertida del tercero. Tenga en cuenta que la salida se retrasaría en un ciclo completo de reloj, pero se podría asegurar razonablemente que se obtendrá un pulso de un reloj, incluso si el pulso llega cerca del límite del reloj en violación de los requisitos de configuración / retención. Si se omitiera el primer flop, la salida llegaría un ciclo antes, pero podrían aparecer problemas técnicos si un pulso entrante infringe los requisitos de configuración / retención.

simular este circuito : esquema creado usando CircuitLab

Un enfoque alternativo si los impulsos altos pueden ser arbitrariamente cortos, pero se separará por al menos tres ciclos de reloj, sería tener una cadena de tres flops alimentados no por la entrada de pulsos, sino por un flop que obstruya la salida invertida del estado del tercer flop.

simular este circuito

Tenga en cuenta que en esta segunda versión, es necesario usar un XOR en lugar de un circuito AND-NOT, ya que un pulso entrante cambiará efectivamente el estado de la señal que se propaga a través de los flops. Tenga en cuenta también que la segunda versión puede funcionar mal si se recibe un pulso cerca del tercer borde del reloj después de un pulso anterior, debido a una violación de configuración / retención en el primer flop.

    
respondido por el supercat
2

Lo que estás buscando se llama circuito de un solo disparo. Aquí hay una implementación que usa flip-flops D con reinicios asíncronos:

SegúnAnonymous,esotieneproblemasconlametastabilidad.Alternativamente,puedesprobarestecircuitomáscomplicado:

simular este circuito : esquema creado usando CircuitLab

Tenga en cuenta que las diferentes implementaciones tendrán un comportamiento ligeramente diferente. Bradman175 ya señaló una de esas diferencias. En un sistema completo, también deberías tener en cuenta aspectos como el debouncing del switch y la supresión de problemas de inicio.

    
respondido por el Adam Haun
1

Aunque mi respuesta hace casi lo mismo que la de Adam Haun con más componentes, mi circuito difiere ligeramente. En ese circuito de un disparo, si pulsa rápidamente (se enciende y apaga rápidamente) entre los tiempos de subida del reloj, la próxima vez que se levante el reloj, todavía activará la salida. En mi circuito, no activa la salida si haces eso. No estoy seguro de cuál es mejor.

    
respondido por el Bradman175

Lea otras preguntas en las etiquetas