Sincronice las salidas de FPGA independientes en 1 ns

Editar: he podido lograr una incertidumbre de 560ps en la simulación mediante el uso de retroalimentación PLL externa en todo el chip. Una vez que verifique en hardware real, publicaré una solución completa.

Estoy tratando de sincronizar las salidas de dos FPGA Spartan-6 separados físicamente. Idealmente, el sesgo entre las salidas de los dos dispositivos sería inferior a 1 ns.

Las salidas son pines diferenciales controlados por un OSERDES2.

Una posibilidad podría ser distribuir un reloj de referencia a los dos FPGA. La señal se enrutaría para que llegue a cada FPGA "exactamente al mismo tiempo".

ingrese la descripción de la imagen aquí

El reloj de referencia 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 reloj :

ingrese la descripción de la imagen aquí

¿Este mecanismo de retroalimentación cancelará el retraso de inserción del reloj, de modo que el IOCLK esté en fase con el pin de entrada del reloj?

El ISERDES2 en el mismo dominio 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 del dispositivo que evitarán que las salidas estén en fase de forma determinista?

Por ejemplo, me preocupa que el retraso de propagación de OSERDES2 al pin de salida pueda variar mucho entre dispositivos. Basado en la hoja de datos de tiempo :

ingrese la descripción de la imagen aquí

¿Esta especificación de 0,94 ns significa que la propagación puede estar entre 0 y 0,94 ns en diferentes dispositivos?

¿Hay algún enfoque más sólido para este problema?

Consulte los protocolos NTP y PTP.
NTP?? ¿En serio, para tiempos de nanosegundos? ¿Entre FPGA? PTP es mejor, pero aún está lejos de la marca en órdenes de magnitud, y si esa fuera toda la precisión requerida, hay formas mucho más fáciles.
@DanMills se pueden modificar para una mejor precisión. Lo dije más como un ejemplo de cómo uno abordaría tal problema.
@ usuario110971 gracias por la iniciativa, es útil conocer las técnicas utilizadas para resolver este tipo de problemas, incluso si los detalles difieren.
@JayKeegan a lo que quería llamar su atención son los mecanismos de retroalimentación. Sospecho que tal precisión es muy difícil de implementar en sistemas de bucle abierto. Los sistemas de cronometraje de precisión suelen hacer algo como esto: medir error -> controlar -> PLL/DLL.

Respuestas (2)

¿Hay algún enfoque más sólido para este problema?

¡¡Sí!!

Coloque ambas funciones de FPGA en un solo dispositivo.

Tratar de mantener el determinismo con 1ns para dispositivos separados es casi una quimera.

Hm, sí, si tan solo... :)
Si tiene que tener dispositivos separados, cambie la arquitectura de diseño de su sistema para eliminar el requisito de determinismo.
Es una aplicación de sincronización precisa, por lo que se requiere determinismo en alguna parte , pero podría pensar en formas de cambiarlo mientras tanto.
¿Cuál es en particular la caída del enfoque descrito?
Temperatura, voltaje y tiempos de vuelo de la señal en los cables. Luego agregue ruido por si acaso.

Realmente, realmente desea que ambas señales se registren en el mismo FPGA, idealmente en el mismo banco IO, e incluso entonces 1ns lo está impulsando para un par LVDS de propósito general.

Por supuesto, no puede preocuparse por eso y recortar las longitudes de los cables para cancelar el sesgo, está buscando ~ 1ns por pie, por lo que recortar las longitudes de coaxial es un enfoque bastante razonable en un instrumento único, posiblemente algo menos en los volúmenes de producción. ..

¿Podría intentar encontrar un ECL10K o un flip-flop dual y usarlo para registrar las dos salidas externamente al FPGA? ¿Quizás alguien como Pericom tiene algo adecuado?

Dentro de la misma región BUFIO, el sesgo del árbol del reloj es en realidad de 60 ps, ​​el sesgo del paquete es de 95 ps. La variabilidad del retraso de propagación es una pregunta abierta... Si puedo recortar las longitudes coaxiales (o usar los retrasos con derivación), ¿está diciendo que la variación del dispositivo es estática y es posible calibrarla? Esto me preocupa menos que la variación de temperatura de> 1 ns. Finalmente, ¿cuál es la ventaja de las chanclas externas? ¿Especificaciones de tiempo más precisas? El Spartan 6 (grado -3) puede registrar datos a 1 Gbps en todos los pines de E/S.
El retraso del dispositivo generalmente no es estable con la temperatura y, por lo general, debe realizar una alineación de carril automatizada si se ejecuta en algo como DDR de 1 GHz, esto es fácil cuando el protocolo está diseñado para admitirlo, pero tengo la impresión de que estamos hablando de una aplicación de tiempo no enlace de datos aquí? FPGA Ovenizado....? Los flip-flops externos proporcionan un registro que puede tener un sesgo más bajo (y una variabilidad más baja) que el propio FPGA, tendría que estudiar las hojas de datos.
Está bien, nos entendemos. ¡Gracias por el consejo!