Editar: He logrado alcanzar una incertidumbre de 560ps en la simulación utilizando retroalimentación de PLL externo en todo el chip. Una vez que verifique en hardware real, publicaré una solución completa.
Estoy tratando de sincronizar las salidas de dos FPGAs Spartan-6 físicamente separadas. Idealmente, la diferencia entre las salidas de los dos dispositivos sería inferior a 1ns.
Las salidas son pines diferenciales controlados por un OSERDES2.
Una posibilidad podría ser distribuir un reloj de referencia a las dos FPGAs. La señal se enrutaría para que llegue a cada FPGA "exactamente al mismo" tiempo.
El reloj de referencia se pasaría a través de un PLL, con retroalimentación a través de un dispositivo BUFIO2_FB. Como se muestra en el ejemplo de recursos de sincronización:
¿Este mecanismo de retroalimentación cancelará la demora de inserción de reloj, para que el IOCLK esté en fase con el pin de entrada de reloj?
El ISERDES2 en el mismo dominio de IOCLK registraría una señal de datos de referencia que simplemente denota un borde de reloj particular para alinear la salida.
¿Existen otras variaciones de dispositivo que evitarán que las salidas estén determinísticamente en fase?
Por ejemplo, me preocupa que la demora de propagación desde OSERDES2 hasta el pin de salida podría variar mucho entre dispositivos. Basado en la hoja de datos de sincronización:
¿Significa esta especificación de 0.94 ns que la propagación puede estar en cualquier lugar de 0 a 0.94ns en diferentes dispositivos?
¿Existe un enfoque más sólido para este problema?
0 votos
Echa un vistazo a los protocolos NTP y PTP.
0 votos
¿NTP? ¿De verdad, para tiempos en nanosegundos? Entre FPGAs? PTP es mejor, pero sigue estando a órdenes de magnitud de la marca, y si eso fuera toda la precisión requerida, hay formas mucho más fáciles.
0 votos
@DanMills pueden ser modificados para una mayor precisión. Lo decía más como un ejemplo de cómo uno abordaría un problema como este.
0 votos
@user110971 gracias por la pista, es útil conocer las técnicas utilizadas para resolver este tipo de problemas, incluso si los detalles son diferentes.
0 votos
@JayKeegan lo que quería señalar tu atención es los mecanismos de retroalimentación. Sospecho que tal precisión es muy difícil de implementar en sistemas de circuito abierto. Los sistemas de temporización de precisión suelen hacer algo así: medir el error -> control -> PLL/DLL.