Estoytratandodeusarun
Puse un circuito en un simulador y funcionó bien. Implementé un circuito de rebote para el interruptor que funciona bien por su cuenta, y mi alcance muestra un aumento rápido y suave sin rebotes.
Básicamente, tengo el interruptor presionado y conectado a la entrada CLK. Cuando se presiona el botón, el reloj se pone alto, activando el FF en el borde ascendente de esta señal.
La salida ~ Q está conectada directamente a la entrada D. Cuando el FF es activado por el reloj, ~ Q toma el valor opuesto a D. Por lo tanto, el FF debe cambiar los valores en cada pulsación de botón. Debido a que el FF solo se activa por el flanco ascendente de la señal CLK, no tengo que preocuparme por el cambio de D más rápido de lo que puedo soltar el botón. Todo bien en teoría (y en mi simulador).
Así que compré un D FF y lo conecté a mi placa de pruebas, adjunté mi botón y mis pasivos, encendí un LED en la salida y ... está mal. Se activaría o desactivaría al presionar un botón, con una probabilidad algo igual.
Examiné la señal CLK con mi alcance y creo que encontré al culpable. A medida que el borde del reloj cae, alcanza un cierto voltaje y luego atraviesa una tonelada de pequeñas oscilaciones. Parece que estas oscilaciones se siguen registrando como "flancos ascendentes" en la señal CLK, lo que cambiaría rápidamente el valor de ~ Q (y, en consecuencia, D). Interpreto esto como la razón por la que no puedo predecir la salida de la configuración actual, porque no tengo idea de cuántas docenas de oscilaciones ocurren durante la caída del borde del reloj.
El examen de las líneas ~ Q / D muestra un comportamiento de oscilación similar cuando el CLK va a ser metaestable.
He intentado conectar condensadores en las líneas CLK, D y ~ Q en todo tipo de combinaciones para intentar suavizar el comportamiento. Nada ha funcionado. Parece que el estado metaestable está arruinando mi circuito, del cual he leído un poco y entiendo que es un problema bastante serio en la lógica digital.
¿Existen métodos probados y verdaderos para eliminar este comportamiento metastable? ¿O alguna sugerencia para bajar mi señal CLK lo suficientemente fuerte como para que no quiera oscilar?
Cualquier sugerencia es apreciada. Voy a seguir conectándome lejos.