Latencia excesiva en la comunicación entre FPGA

1

Tengo 4 FPGAs Spartan 6 conectados a través de carriles de 64 bits, formando una línea. (Es decir, FPGA1 está conectado a FPGA2, FPGA2 está conectado a FPGA3 y FPGA3 está conectado a FPGA4.)

He dividido cada carril de 64 bits en dos carriles de 32 bits, uno para cada "dirección". Luego conecto los carriles de 32 bits para formar un gran loopback de FPGA1 a FPGA4 y viceversa.

Al probar este loopback (donde FPGA1 realiza la prueba) con un "walking 1" viajando cada 100 ciclos de reloj, me doy cuenta de que el loopback es inestable (el bit 7 no sube lo suficientemente rápido, parece). Cuando reduzco la velocidad de marcha 1 para mover cada 1000 ciclos de reloj, la prueba pasa.

El FPGA1 está sincronizado a 20 MHz, por lo que 100 ciclos son 5 microsegundos. ¿Una señal realmente necesita más de 5 microsegundos para viajar de FPGA1 a FPGA4 y volver? ¿Qué podría estar causando esta latencia excesiva? (Los FPGA se encuentran en la misma placa y están muy cerca entre sí).

    
pregunta Randomblue

1 respuesta

3

\ $ 5 \ mu s \ $ es un lot más lento de lo que esperaría para una implementación ingenua, por lo que puede tener otros problemas. Verifique el editor de Floorplanner o FPGA para ver cómo se ve realmente el diseño enrutado. Puede intentar agregar una restricción de tiempo "pad to pad" si aún no lo ha hecho.

Pero en general, los diseños asíncronos no se recomiendan para los FPGA. No estoy seguro de cuál es su propósito, pero para la comunicación entre chips, la mejor práctica es implementar algún tipo de interfaz temporizada.

    
respondido por el mng

Lea otras preguntas en las etiquetas