Datos de entrada de Spartan-6: ¿Usar pines de datos o GCLK?

Estoy diseñando una PCB que se conecta a un Spartan-6 a través de un conector (placa Opal Kelly XEM). La PCB alberga algunos componentes analógicos que se comunicarán con la FPGA (ADC, DAC). La propia placa FPGA es completamente autónoma (tiene reloj propio, PLL,...).

Mis señales de entrada a la FPGA son:

  1. Señales SPI (MISO/MOSI/SCK) de diferentes circuitos integrados
  2. Datos LVDS de los ADC (datos en serie) + reloj emparejado sesgado para bloquear estos datos en el FPGA
  3. Señal de reloj CMOS que puede usarse para cronometrar el FPGA en sí mismo o sincronizar ciertas señales en el FPGA (tal vez no se use, pero por si acaso).

Actualmente conecté todas estas entradas a los pines de datos FPGA (por ejemplo, L32P_0, L2N_0 y L3N_0/L3P_0, L66P_0, L66N_0, etc.)

Ahora me pregunto si debo conectar algunas o todas estas señales a la red de reloj global (GCLK), por ejemplo, L34P_GCLK19_0, L34N_GCLK18_0, etc.).

  • ¿Es una buena idea conectar cualquier entrada que sea/pueda ser un reloj (se usará en always @(posedge)GCLK?
  • ¿Cómo decidiría qué señales conecto a los pines de datos frente a GCLK?
  • ¿Cuál es el propósito de la red de reloj global (pines GCLK) y cuáles son las ventajas/desventajas?
  • ¿ Los pines GCLK también se pueden usar de manera segura como entrada LVDS (por ejemplo, L36P_GCLK15_0y L36N_GCLK14_0)?

Respuestas (2)

La red de reloj global en un FPGA es una red especialmente enrutada. Es un árbol 'equilibrado' que ofrece un sesgo mínimo entre los CLB. (¡Eso no es lo mismo que un retraso mínimo!).

En muchos FPGA, la red de reloj global termina en un MUX cuya salida solo va al pin de reloj de los registros en el CLB. En esas FPGA's es caro (en lógica y tiempo) o imposible usar el reloj para datos.

Los nuevos FPGA tienen muchos pines de E/S que funcionan en pares para hacer una entrada o salida diferencial. Es fundamental que utilice un 'par' para señales diferenciales. Definitivamente también tendrán un 'par' para la red de reloj global.

Para obtener más información, debe leer las hojas de datos de FPGA y prepararse para reservar unas horas para eso. La E/S de alta velocidad solo funciona si presta una atención meticulosa a esos detalles.

Diría que no es necesario enrutar señales que no sean de reloj a los pines de la red de reloj global. En caso de que dicha señal tenga un fanout alto, aún puede implementar un búfer global.

Edité mi pregunta. Supongo que no fui muy claro. ¿Cuál es el propósito de los pines GCLK en primer lugar? ¿Cuáles son las ventajas/desventajas?
En general, los pines glock están almacenados en búfer y, por lo tanto, pueden tener un abanico más alto, por lo que impulsan más lógica como lo hacen los relojes. Entonces, todo lo que se usa como reloj para los pines del reloj y todas las entradas lógicas pueden ir a los pines de datos normales. Por supuesto, también pueden ir a pines GCLK pero sin ninguna ventaja adicional.
Cuando dice "impulsar más lógica", ¿se refiere a la lógica en el FPGA? Si te refieres a la lógica "fuera de la FPGA", ¿esto solo sería útil para las señales de reloj que salen de la FPGA?
Sí, me refiero a la lógica en el FPGA