Hace mucho tiempo, como experimento mental, 'diseñé' un FPGA de captura de tiempo.
Tenía un oscilador en anillo, convencional aparte del hecho de que tenía 41 inversores. El período era, por lo tanto, mucho más bajo que el retraso de cualquier puerta. El proceso FPGA tuvo retrasos de compuerta individuales en los 10s de pS donde el enrutamiento era local y el abanico de salidas bajo, pero solo podía manejar relojes del sistema en el orden de 100s de MHz, debido a multiplexación, enrutamiento y demoras de carga entre los bloques.
El proceso de captura de tiempo luego usó 41 latches D, cada uno capturando la transición de entrada, pero, por supuesto, cronometrado en diferentes fases del ciclo del contador de anillo. Las salidas de los latches D podrían interpretarse como un 'código de termómetro', interpolando la transición de entrada a la precisión del subciclo, con una resolución en los 10 s de pS. Otros 41 pestillos D capturaron un reloj de referencia.
Hay dos dificultades principales con tal estructura. La primera es obtener las herramientas de síntesis para colocar el contador de anillos y líneas a los pestillos D de una manera de alta velocidad. Esta parte probablemente sería mejor manejada por la colocación manual directa. Es posible que necesite un tipo específico de FPGA pequeño de alta velocidad, tal vez uno sin multiplicadores y núcleos de procesador. El segundo es el manejo libre de carreras de la superposición entre el código del termómetro y un contador convencional cronometrado por la referencia de frecuencia más baja, pero se puede hacer, cuidando los problemas de metastabilidad.
No lo perseguí porque encontré una mejor manera de resolver el problema, pero fue divertido.