Sincronizando transiciones GPIO a un reloj externo

3

Actualmente, estoy usando un ADC con un disparador externo con la advertencia de que el borde del disparador debe estar dentro +/- 25ns del reloj del ADC (vea la Figura 3 de la hoja de datos). El reloj del ADC está disponible en un pin del ADC.

En este caso, el GPIO utilizado para operar el disparador no está sincronizado con el reloj ADC y, por lo tanto, es necesaria la sincronización. Aparentemente, la mejor manera de hacerlo es con dos flip-flops en cascada conectados al mismo reloj para garantizar que no haya una condición de carrera entre el tiempo de configuración y el pulso del reloj.

Parece que hay algunos errores con este enfoque. Algunas fuentes recomiendan un retraso entre las dos chanclas para mayor seguridad. Otros dicen que las FF de "sincronización reforzada" son necesarias.

Entonces, ¿cuál es la mejor manera de resolver este problema? ¿Hay una familia lógica preparada que haga el truco? ¿O un IC específico?

    
pregunta Damien

1 respuesta

5

Los dos flip-flops se utilizan para evitar problemas con metastability . La idea es que el primer flip-flop tiene una pequeña probabilidad de ser metaestable, pero si lo hace, es mucho menos probable que el estado metaestable se propague al segundo flip-flop.

Un flip-flop "endurecido" tiene una ganancia interna más alta que un flip-flop "normal", lo que significa que un estado metaestable debería decaer más rápidamente, reduciendo las posibilidades de propagación. Sin embargo, solo he visto "endurecimiento" discutido en el contexto del diseño de IC personalizado, y no conozco dispositivos endurecidos que estén disponibles como dispositivos discretos.

Poner un retraso entre los flip-flops es en realidad contraproducente, ya que esto reduciría la ventana de tiempo para que el estado metaestable disminuya.

Entonces, solo use dos flip-flops de la tecnología que mejor se ajuste al resto de su circuito.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas