Aquí hay una solución de dominio digital. No hay un nombre para un componente que se ajuste a la función que describe, pero puede usar un sincronizador junto con una máquina de estados finitos.
simular este circuito : esquema creado usando CircuitLab
Synchronizer
Primero, su dedo no está sincronizado con el reloj, por lo que se supone que el botón es una señal asíncrona. Si la entrada cambia cerca del reloj, podría violar la configuración o mantener los requisitos de tiempo de la DFF0. Esto puede hacer que la salida de DFF0 sea impredecible (metaestable), incluso un nivel no lógico. Un DFF que va a ser metaestable es como una moneda que cae de lado cuando lo volteas. Debería ser 0 o 1, pero en realidad, en casos raros, no lo es.
El problema no es que el DFF retenga un nuevo valor 1 ciclo temprano o tarde, el problema es que la salida puede fallar de un lado a otro antes de estabilizarse en un valor particular. Esto podría ser malo aguas abajo del diseño. En este caso, nuestro FSM puede generar una falla o un pulso de dos ciclos de reloj, por ejemplo. La probabilidad de que ocurra la metástrabilidad es generalmente bastante baja y depende de su DFF, la velocidad de reloj operativa, la tensión de alimentación, el ruido aleatorio y la hora exacta en que presiona el botón.
Este problema se denomina cruce de dominios de reloj (CDC) y requiere una técnica de sincronización. Un enfoque popular es sólo dos DFF como arriba. Esto agrega una latencia de dos ciclos de reloj a la señal de entrada, pero este retraso es trivial en su aplicación. El sincronizador no elimina el problema por completo, pero lo hace una posibilidad extremadamente baja. Los errores debidos a no dirigirse a un CDC son muy difíciles de depurar. Puede pasar 1000 pruebas y fallar la prueba 1001. Esto puede llevar a un seguimiento y depuración minuciosos para tratar de encontrar la fuente del error muy raro.
Si lo que está creando tiene una baja tolerancia a los errores, debe usar un sincronizador. Puede usar uno como el anterior, o usar uno con tres DFF para una probabilidad aún menor de falla. De lo contrario, si puede tolerar un error ocasional, puede salirse con solo dos DFF y una compuerta AND para todo su diseño.
El nivel de robustez en el diseño debe coincidir con su aplicación. Si está construyendo un circuito de misión crítica como un sistema de guía de cohetes, probablemente debería usar un sincronizador 3 DFF. Si está creando un producto de consumo con alta confiabilidad, vaya con el sincronizador 2 DFF. Si se trata de un juguete de comida feliz de McDonald's, solo use un solo DFF. Un buen ingeniero eléctrico debe conocer los requisitos de MTBF para el diseño, y calcular la probabilidad de falla permitida para el circuito del botón , la tasa real de fallos de las opciones del sincronizador, y elija en consecuencia.
Máquina de estados finitos
Lo que quieres para tu generador de impulsos es en realidad una máquina de estados finitos. Si usted es un principiante completo o un profesional experimentado, siempre se recomienda comenzar con un diagrama de estado.
Comenzamos en el estado A. Cuando la entrada cambia a 1, queremos que la salida, \ $ y [n] \ $, sea 1. Un ciclo de reloj más tarde, \ $ y [n] \ $ debería volver a 0, por lo que necesitamos cambiar el estado a B para recordar que no salga 1. Luego esperamos que \ $ a [n] \ $ sea 0 antes de que el estado regrese a A. Desde allí comenzamos desde el principio. Con la señal de entrada ahora sincronizada como \ $ a [n] \ $, podemos dibujar el diagrama según lo que queramos.
Desdeallí,deberíapoderpasardeldiagramadeestadoaunatabladeestadoyluegoauncircuitodeFSM.SolonecesitaunDFFensuFSMpararepresentarlosdosestados.Enelejemploanterior,elestadoAyelestadoBrepresentanQ=1yQ=0respectivamente,peropuedeobtenerunFSMalternativoigualmenteválidocambiandolosdosestados.SinoesobviocómollegaralcircuitodeFSM,sigaalgunas FSM simple tutoriales hasta que lo aprendas.
La salida del FSM anterior será \ $ a [n] \ cdot \ overline {a [n-1]} \ $. Esto significa que solo emite un pulso de 1 ciclo cuando hay una transición de 0 a 1 en la señal de entrada.
Una nota final es que si no puede tolerar los errores durante el inicio, deberá agregar un restablecimiento a sus tres DFF. De lo contrario, se garantiza que el diseño anterior se estabilizará en la salida correcta después de tres ciclos de reloj después del encendido.